Jump to content
IGNORED

RetroN 77


jeremiahjt

Recommended Posts

Corporate greed. Everything should be open and free. Nothing declassified, period. No copyrights. No patents. No Hipaa. No top secret NSA documents. No covert ops. No bin laden raids because everyone just gets along and there's no need for terrorism. Everything is open and everyone is happy. No need for monetary systems either. Nobody works for pay, just help each other out when needed. If you want something of mine, well here I'll let you have it. Nobody hoards the things of the past monetary loving society. Pass them around. Have at it. My game collection is your library. Free rentals for all, and if you don't return it, I'll forgive you because I know you would do me likewise.

 

Sarcasm aside, clearly there needs some balance. Free to use and proprietary can never truly mix. I download games on my Switch or Wii-U and in the credits they list all the GPL assets they used in the game, but nowhere do I find repositories for the source code of said game. How is it they are allowed to use GPL assets in their game and sell it commercially?

 

So is modifying code for your own use, then only share the parts you modified, but not the source for the entire software or device, compatible with GPLv3? In other words Hyperkin could use the Stella emulator, modify it to be compatible with their proprietary cartridge reader, release the changes to the code, but still keep the source to their proprietary cartridge reading firmware confidential? Would that be allowable?

 

I believe it is licenced under GPLv2 instead of 3. Version 3 is to prevent tivoization. Anyway, I'm confused on what you are asking. If you shared the parts you modified but not the parts you didn't but they are already open source then wouldn't everything be shared but just not by the same parties? Anyway, if software has a GPLv2 licence then you have to share the source of the new version and give it the same GPLv2 licence.

 

I agree there needs to be some balance. For an example, with the Flashbacks AtGames would have to make compromises to convince Atari and others to licence their games. For an example, they likely wouldn't go along with having the games that are included stored as ROM's on an SD card. But with the 77 I don't see any issues like that because you provide your own games. For how niche it is just to make a clone that just supports one system and even more so with that being the Atari VCS it seems like they would go all in to make it as appealing as possible to Atari VCS gamers and developers. If it was made good enough then the only proprietary thing it needs is its trademark because people would want to support it over copies. It is like how people prefer EverDrives as a brand of flash carts, homebrews without the Hozer logo on them, etc.

 

I think they should try to build a console around Stella that is basically a little PC with a Retrode, 2600-daptor, SD card slot, etc. built into it so that it is basically a console that has everything you would ever need for Stella in one box. Not just for gamers but even allow devs to hookup keyboards and access developer tools in it and so forth. Make it so that new versions of Stella not only can be flashed to it but Hyperkin will send out updates for it. And when a future version of Stella requires more specs and/or they discover ways to improve the hardware from user feedback then they sell a new version. In other words, it should be more interactive with the community and be a console that it and future iterations of it evolve with Stella.

  • Like 1
Link to comment
Share on other sites

 

I believe it is licenced under GPLv2 instead of 3. Version 3 is to prevent tivoization. Anyway, I'm confused on what you are asking. If you shared the parts you modified but not the parts you didn't but they are already open source then wouldn't everything be shared but just not by the same parties? Anyway, if software has a GPLv2 licence then you have to share the source of the new version and give it the same GPLv2 licence.

Meaning they can release the source to modifications they made to the emulator, but not other unrelated parts of the hardware or firmware.

 

For instance, suppose they create Stella version 5.h (H being Hyperkin's specific enhancements to the program) and bundle it in the Retron77. They release the source code to Stella version 5.h as per the license agreement.

 

Next, they create a proprietary cartrdige slot interface with it's own firmware. Stella emulator v5.h can communicate with the proprietary cartridge slot interface in order to read carts, but the firmware for the proprietary cartridge slot interface is closed source and not available via GPL.

 

The retron firmware consists of an OS, GUI, and the firmware for the proprietary cartridge slot interface. Then you download the emulator update which runs the carts. The emulator update file is open source and can be recompiled with the proper tools.

 

So firmware = closed source.

 

Emulator (required to use hardware) = open source.

 

Two files you have to download, one of which is closed source and contains no code borrowed from GPL sources, the other of which is completely open sourced and allows user modification. So an official update is supplied by Hyperkin but you can use unofficial builds of the emulator portion if you want. You could probably even get away with using Kevtris style adapters to run other systems, but I doubt the VCS has enough pins for many. An SD card adapter add-on (assuming Harmony doesn't work) would be feasible.

 

Would this violate the Stella GPL agreement if they compartmentalized the REtron77 firmware into two components, one open and one proprietary? Then Hyperkin still gets a closed device which cannot be easily duplicated by third parties, but allows the flexibility of better emulator support and the community at large.

 

EDIT: I am not a lawyer so I have no idea if such a system would satisfy GPL requirements.

  • Like 1
Link to comment
Share on other sites

His username is Dr Manhattan and he is still very much active on these boards. I think he's a good guy who wants to be here. Please don't shoot the messenger over decisions corporate makes that he likely has little control over.

 

He did say they had Harmony cart running at one point (which would be very difficult to emulate at bus level) so I give him benefit of the doubt unless we learn otherwise.

 

Retron77 might suck, but it might also be the bee's knees. We really don't know yet what the final product will be capable of.

 

Oh don't get me wrong, I'm not blaming him and I'm sure there are things he can't say. However it's always the things that aren't said that are of the greatest concern.

 

EDIT - I was referring to the user "AndrewHyperkin". As far as I know he's a brand new user and only has 2 posts, both in this thread. He was the rep I was referring to. I know Dr Manhattan is a good guy.

  • Like 3
Link to comment
Share on other sites

Meaning they can release the source to modifications they made to the emulator, but not other unrelated parts of the hardware or firmware.

 

For instance, suppose they create Stella version 5.h (H being Hyperkin's specific enhancements to the program) and bundle it in the Retron77. They release the source code to Stella version 5.h as per the license agreement.

 

Next, they create a proprietary cartrdige slot interface with it's own firmware. Stella emulator v5.h can communicate with the proprietary cartridge slot interface in order to read carts, but the firmware for the proprietary cartridge slot interface is closed source and not available via GPL.

 

The retron firmware consists of an OS, GUI, and the firmware for the proprietary cartridge slot interface. Then you download the emulator update which runs the carts. The emulator update file is open source and can be recompiled with the proper tools.

 

So firmware = closed source.

 

Emulator (required to use hardware) = open source.

 

Two files you have to download, one of which is closed source and contains no code borrowed from GPL sources, the other of which is completely open sourced and allows user modification. So an official update is supplied by Hyperkin but you can use unofficial builds of the emulator portion if you want. You could probably even get away with using Kevtris style adapters to run other systems, but I doubt the VCS has enough pins for many. An SD card adapter add-on (assuming Harmony doesn't work) would be feasible.

 

Would this violate the Stella GPL agreement if they compartmentalized the REtron77 firmware into two components, one open and one proprietary? Then Hyperkin still gets a closed device which cannot be easily duplicated by third parties, but allows the flexibility of better emulator support and the community at large.

 

EDIT: I am not a lawyer so I have no idea if such a system would satisfy GPL requirements.

 

I would think so. It isn't like everything open source software "touches" has to become open source. Linux has the same licence but there are very few distros that have no proprietary software and that proprietary software doesn't somehow get a new open source licence just because Linux "touches" it. Think of the OUYA and how you can run Stella on it. Now imagine that the 77 ran on its own modified version of Android customly made with all the drivers needed for the cartridge slot, controllers, etc. All that stuff would just have to comply with Android's open source licence. Then Stella is running on that new custom version of Android. Just Stella would have to comply with the GPL. Stephen could probably give a better explanation and correct any of my errors but I believe it is something like that.

  • Like 1
Link to comment
Share on other sites

 

Oh don't get me wrong, I'm not blaming him and I'm sure there are things he can't say. However it's always the things that aren't said that are of the greatest concern.

 

EDIT - I was referring to the user "AndrewHyperkin". As far as I know he's a brand new user and only has 2 posts, both in this thread. He was the rep I was referring to. I know Dr Manhattan is a good guy.

The two relavent posts by AndrwHyperkin:

http://atariage.com/forums/topic/266544-retron-77/page-13?do=findComment&comment=3786316

http://atariage.com/forums/topic/266544-retron-77/page-14?do=findComment&comment=3786849

 

Sorry I did not reread the entire thread, and it appeared that Dr Manhattan had a close relationship with Hyperkin not unlike Bill Loguidice has with AtGames.

 

Andrew is a publicist, so his job is not to participate in forums but to step in to provide info when necessary. His two posts don't surprise me. He will likely post more info when it is available or he is at liberty to disclose it.

 

Honestly there has been much speculation hinged entirely around Hyperkin's licensing of the Stella 1.1 source. As soon as Stella 1.1 was mentioned, everyone grabbed for the pitchforks stating Game X will work but Y won't. If they had Harmony running previously (at least two people associated with the company have made this claim publicly) then perhaps there is more going on than meets the eye. If Hyperkin are truly emulating the Atari 2600 at the bus level, then support for advanced bankswitch schemes may not even be necessary since that portion of the code is handled by the cart itself. Atari 2600 is extremely simple hardware at it's core, so if some new method for emulating the hardware at the bus level has been discovered, then Pitfall II, DPC+, and all the other exotic bankswitch schemes may not be necessary on the emulation side. Possibly the source is to better understand how the hardware operates. It could very well be a game changer, and if so, then perhaps Retroblox / Polymega was not blowing smoke either when they suggested hybrid emulation.

 

We will wait, but I would prefer to show a bit of optimism until later in the game when we know exactly what we are getting. An actual mass market clone for the 2600 (not a Flashback 2/2+ mod) has never been done before and is awesome in concept, so let's give Hyperkin the benefit of the doubt. If this is indeed "hybrid emulation" then it sets a very real precedent for future clones.

  • Like 3
Link to comment
Share on other sites

 

I would think so. It isn't like everything open source software "touches" has to become open source. Linux has the same licence but there are very few distros that have no proprietary software and that proprietary software doesn't somehow get a new open source licence just because Linux "touches" it. Think of the OUYA and how you can run Stella on it. Now imagine that the 77 ran on its own modified version of Android customly made with all the drivers needed for the cartridge slot, controllers, etc. All that stuff would just have to comply with Android's open source licence. Then Stella is running on that new custom version of Android. Just Stella would have to comply with the GPL. Stephen could probably give a better explanation and correct any of my errors but I believe it is something like that.

 

Yes, this is basically it. As long as there are two processes in memory that can talk to each other over some protocol, then the separation is adequate. For example, in Stella 1.1, the core code was non-GPL but the sound code was GPL. So the sound code was placed in a separate sound server that was launched by the core program upon application startup. The standalone core could run exclusively of the sound server app, except of course there was no sound. Both apps could be updated separately, with no regard for what the other one was doing, as long as the method and type of communication between them stayed in sync.

 

IMO, this idea could be extended to the cart reader code. The cart reader, custom UI, whatever else is in one or more processes that are not GPL'ed. Data is read by the cart reader, then passed to Stella, perhaps by temporarily creating a file in RAM representing the ROM. This is passed to Stella, which then runs it as normal.

 

All of this isn't terribly difficult. GPL'ed software has been made to run with proprietary code before; this is a solved problem.

 

Basically, as long as a piece of GPL'ed software can be compiled into an executable without requiring proprietary bits (ie, object/header/source files that are not GPL), then the license is obeyed.

  • Like 4
Link to comment
Share on other sites

 

If Hyperkin are truly emulating the Atari 2600 at the bus level, then support for advanced bankswitch schemes may not even be necessary since that portion of the code is handled by the cart itself. Atari 2600 is extremely simple hardware at it's core, so if some new method for emulating the hardware at the bus level has been discovered, then Pitfall II, DPC+, and all the other exotic bankswitch schemes may not be necessary on the emulation side.

 

While this could be true, there are much more improvements to the latest version(s) of Stella than bankswitch schemes. The new TIA code is more robust, the M6532 (aka, RIOT) is more properly emulated, etc. So even if the hardware can be emulated at the bus level and remove the need for bankswitching code (and that's a big IF), there have been huge improvements to emulating the core console chips as well.

  • Like 5
Link to comment
Share on other sites

With the Retron 77 coming out, does anyone see the demand for the original hardware lessening? Will people still buy the OG consoles or modded ones? I wonder if an av mod is appealing when you can have HDMI.

Atari 2600 were never big ticket items so it may not affect it much. If anything, common carts may go up a couple bucks but it will still be far cheaper than NES or SNES stuff on the used market for quite some time...

  • Like 1
Link to comment
Share on other sites

That's right.

 

I'm a veteran gamer having had the VCS when I was a kid, and even I don't want the hassle and inconsistency of older analog-style equipment. Not when I've experienced the games 100% in the digital domain. Yes I can tune RC networks and track down crosstalk and high current drain on an address line. But why when there's a better way altogether?

 

I also would not expect the new and current generation of gamers to spend time hunting down CRTs, adjusting them, cleaning them, and aligning them, and learning enough electronics to make it all work. And what if they dislike electronics or don't have the tools to begin with?

 

Sure some of on AA wouldn't have it any other way. Some of us even *like* doing it for fun. But for the wider general populace, read as casual gamer or budding collector, it's a different story. The hassle factor is too great.

 

Keetah, can you tell us again about emulation? I don't think you've covered it enough. :P

  • Like 5
Link to comment
Share on other sites

Atari 2600 were never big ticket items so it may not affect it much. If anything, common carts may go up a couple bucks but it will still be far cheaper than NES or SNES stuff on the used market for quite some time...

 

If this goes for say, 50.00 dollars, that's about a third of the price of a modded console. I hope modders keep on modding. Their efforts are appreciated :)

  • Like 3
Link to comment
Share on other sites

 

While this could be true, there are much more improvements to the latest version(s) of Stella than bankswitch schemes. The new TIA code is more robust, the M6532 (aka, RIOT) is more properly emulated, etc. So even if the hardware can be emulated at the bus level and remove the need for bankswitching code (and that's a big IF), there have been huge improvements to emulating the core console chips as well.

 

I think that is one giant IF :) If initially wondered if that is indeed what they do --- drive the bus from Stella --- but some googling shows that there are "failed to dump ROM" error messages at least on the RetroN 5 , so I think that they dump the ROM first and then throw it at the emulator. That would also explains the somewhat cryptic notes on legal issues with harmony compatibility: without direct bus-level access, the only way to run DPC+ games is reimplementing Stella's DPC+ support. This basically means reading the Stella source and creating your own implementation based on that, and this gets you dangerously close to illegaly copying GPLed code.

  • Like 3
Link to comment
Share on other sites

I think that is one giant IF :) If initially wondered if that is indeed what they do --- drive the bus from Stella --- but some googling shows that there are "failed to dump ROM" error messages at least on the RetroN 5 , so I think that they dump the ROM first and then throw it at the emulator. That would also explains the somewhat cryptic notes on legal issues with harmony compatibility: without direct bus-level access, the only way to run DPC+ games is reimplementing Stella's DPC+ support. This basically means reading the Stella source and creating your own implementation based on that, and this gets you dangerously close to illegaly copying GPLed code.

 

If this is indeed the case, then it makes even less sense not to use the latest version of Stella. If you will be dumping the ROM and running the emulator external to the dumping/UI app, then that is the perfect use case of running a GPLed program and obeying the license (as mentioned above).

 

The other thing about reading the current source and creating your own implementation is indeed a problem. If you're not going to use the new code, better not to look at it at all. But if you're wanting to reimplement everything anyway, better to just use the new code. At this point, it's probably better to just use the newest code anyway. The end user gets the best experience, and there are no potential complaints of copyright infringement over the GPL.

  • Like 3
Link to comment
Share on other sites

IMO, this idea could be extended to the cart reader code. The cart reader, custom UI, whatever else is in one or more processes that are not GPL'ed. Data is read by the cart reader, then passed to Stella, perhaps by temporarily creating a file in RAM representing the ROM. This is passed to Stella, which then runs it as normal.

I agree with your points, but just wanted to underscore the devil is in the details here. If that in-memory "file" is actually a conventional method for communication between separate programs, say a real file on a ramdisk, then you're clear. If it's some custom shared memory implementation, then it wouldn't be covered.

 

Of course, it also comes down to what the copyright holders actually want to enforce.

 

I think these guys would have done better if they worked with you and threw a few bucks your way - it would have resulted in a much better product.

  • Like 3
Link to comment
Share on other sites

I agree with your points, but just wanted to underscore the devil is in the details here. If that in-memory "file" is actually a conventional method for communication between separate programs, say a real file on a ramdisk, then you're clear. If it's some custom shared memory implementation, then it wouldn't be covered.

 

Hmm, I didn't notice that part before. Essentially if the programs share internal state to such a degree that they act as one program, then they are considered one program. Makes sense, but I'm pretty sure it wouldn't apply in our case. In that case, one program couldn't work without the other, so it makes sense that they are in effect one large program. What I'm suggesting is a clear separation. Stella will still work even if it doesn't have access to the cart reader. And similarly, the cart reader would still be able to dump a ROM, even if Stella isn't available.

 

I think these guys would have done better if they worked with you and threw a few bucks your way - it would have resulted in a much better product.

 

I tend to agree. Especially since I have experience in dealing with this already.

  • Like 1
Link to comment
Share on other sites

Independence is a great test, but I think it's a higher bar than required. Its legit for a non-GPL program to, for example, call "sed" through a system call. The program may rely on the call being successful, but it's using a method that's normally used between clearly separated programs, and no intimate exchange of data structures is happening.

 

I agree that none of this applies in your suggested case, but just wanted the general principle underlined. :)

  • Like 2
Link to comment
Share on other sites

I agree with your points, but just wanted to underscore the devil is in the details here. If that in-memory "file" is actually a conventional method for communication between separate programs, say a real file on a ramdisk, then you're clear. If it's some custom shared memory implementation, then it wouldn't be covered.

 

Of course, it also comes down to what the copyright holders actually want to enforce.

 

I think these guys would have done better if they worked with you and threw a few bucks your way - it would have resulted in a much better product.

Thanks for sharing this tidbit.

 

 

 

Mere aggregation of two programs means putting them side by side on the same CD-ROM or hard disk. We use this term in the case where they are separate programs, not parts of a single program. In this case, if one of the programs is covered by the GPL, it has no effect on the other program.
Combining two modules means connecting them together so that they form a single larger program. If either part is covered by the GPL, the whole combination must also be released under the GPL—if you can't, or won't, do that, you may not combine them.
What constitutes combining two parts into one program? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).
If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.
By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

 

  • Like 2
Link to comment
Share on other sites

With the Retron 77 coming out, does anyone see the demand for the original hardware lessening? Will people still buy the OG consoles or modded ones? I wonder if an av mod is appealing when you can have HDMI.

 

I can see the need for modding lessening among the newer crowd. The oldsters will always want to stick with their crusty oldster consoles and get into extensive restoration projects and preservation and all that crap. But newcomers and folks less into electronics will simply want to plug'n'play. Not mess with scopes and meters and hot soldering irons.

 

Overall, the demographics will switch to plug'n'play HDMI. In the end people will wanna just "play the games".

 

The will come a point in time, where it'll be a given and people want to buy these things over the original. Citing concerns like longevity and being new and all that. We're head there. Like it or not.

 

And it's fantastic to see emulation making it all possible. Plowing the way forward!

Link to comment
Share on other sites

This is what I've been waiting for. Based on the things I've seen people say in the threads I've peeked in on, I'm not a true retro-gamer or whatever. Heck, I don't even know what a Harmony Cart is . . . I'm assuming it's not a bootleg of Music Machine. (Admittedly, I've only looked around a little bit around the AA site. I'll find out more as I get time.)

 

I'm just a guy who wants to play Defender and E.T. and who understands what emulators are but doesn't really know how to mess with them. What little I DID mess with didn't work well because I don't have controllers for my computers and even then I'm not sure I was doing it right. I enjoyed the Flashback on my old TV, but when that TV died, the Flashback looks horrible on my new TV. Also, Defender and E.T. and Berzerk... and Pac-Man. I want to play these. i want my children to experience them, even if only to mock me for loving them so much.

 

I was just starting to look into how to use my old 2600 on my new TV and this comes up. It excites me. I hope it's legit. I hope it's affordable. I hope the developers are above board with the developing (I may not understand all the details, and I'm not a software developer, but I am a writer and podcaster, and I value creator rights, creator wishes and intentions, and creator copyrights).

 

So long as it's affordable and legitimate, all i care about is this: does it work? Will it put my cartridges on the screen so they look good and I don't have to mess with buying extra bits? I'm in. (There's also the affordability part, of course. Like most of the world, I'm on a limited income.)

 

So I'm watching.

  • Like 3
Link to comment
Share on other sites

This is what I've been waiting for. Based on the things I've seen people say in the threads I've peeked in on, I'm not a true retro-gamer or whatever. Heck, I don't even know what a Harmony Cart is . . . I'm assuming it's not a bootleg of Music Machine. (Admittedly, I've only looked around a little bit around the AA site. I'll find out more as I get time.)

 

I'm just a guy who wants to play Defender and E.T. and who understands what emulators are but doesn't really know how to mess with them. What little I DID mess with didn't work well because I don't have controllers for my computers and even then I'm not sure I was doing it right. I enjoyed the Flashback on my old TV, but when that TV died, the Flashback looks horrible on my new TV. Also, Defender and E.T. and Berzerk... and Pac-Man. I want to play these. i want my children to experience them, even if only to mock me for loving them so much.

 

I was just starting to look into how to use my old 2600 on my new TV and this comes up. It excites me. I hope it's legit. I hope it's affordable. I hope the developers are above board with the developing (I may not understand all the details, and I'm not a software developer, but I am a writer and podcaster, and I value creator rights, creator wishes and intentions, and creator copyrights).

 

So long as it's affordable and legitimate, all i care about is this: does it work? Will it put my cartridges on the screen so they look good and I don't have to mess with buying extra bits? I'm in. (There's also the affordability part, of course. Like most of the world, I'm on a limited income.)

 

So I'm watching.

 

There's no such thing as a fake retrogamer. Enjoying retrogames is enough to earn the title. Maybe being a newcomer that wasn't there back in the early 1970's when videogames got underway may give you different views on the early culture. But that's alright.

 

Emulators can be tricky. But also very rewarding and practical and convenient. And they do the job. That's why these companies are monetizing them.

 

Old analog consoles on new TVs are becoming more hit or miss as time goes on. You're going to have a better more enjoyable time by getting something that synthesizes the game image entirely in the digital domain, like emulators or this hybrid-thing they're making. Something that has native HDMI output. Farting around with console mods doesn't always yield the expected results.

 

The AtariAge gang will thoroughly vet the product. No doubt. You'll be the first to know if it fails or is impractical, if you pay attention here. So keep watching!

  • Like 2
Link to comment
Share on other sites

Wait I take that back, there CAN be fake retrogamers. Those are the shell companies. Those are the people who have ZERO interest in the hobby and are just trying to somehow capitalize on things "retro". Could be trying to corner the market on cartridges. Or setting up and selling sub-standard R-Pi configurations, or any other number of things.

 

When they fail to gain widespread appeal they go off an sell insurance or action figures or something. Never again thinking of gaming.

  • Like 2
Link to comment
Share on other sites

This is what I've been waiting for. Based on the things I've seen people say in the threads I've peeked in on, I'm not a true retro-gamer or whatever. Heck, I don't even know what a Harmony Cart is . . . I'm assuming it's not a bootleg of Music Machine. (Admittedly, I've only looked around a little bit around the AA site. I'll find out more as I get time.)

http://harmony.atariage.com/Site/Harmony.html

 

I bought one shortly after i piced up my first Atari in 2012. When you finally get one and load the SD card with ROMs, you'll wonder how you ever did without it. ;-)

  • Like 1
Link to comment
Share on other sites

QFT. :P

 

First time I saw that used as "Quoted For Truth" I didn' know of it and got pissed as I was under the impression it ment "Quit Fucking Talking" as that is the only use I'd seen for that acronym previously. :lol:

Edited by Shawn
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...