Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/14/2021 in all areas

  1. Just to back this up; Boulder Dash took about 9 years to complete. There were many periods during that time I was working extra-long hours. I tried a calculation the other day; let's assume I was only working on it 3 months of the year, but when I was working on it, it was pretty full on (which it was). But let's say I only spent 3 hours a night on it, during those 3 months. So how many hours is that? 3 (hours/day) * 7 (days/week) * 4 (weeks/month) * 3 (months/year) * 9 (years) = 2268 hours. Now I'll say right now those numbers strike me as conservative, because I often worked 6-8 hours after work each and every day, and all day during weekends and holidays -- 16 hour days at least. And certainly for longer than 3 month stretches at a time. It's quite possible I put 5000 hours into that game, and @Thomas Jentzsch probably at least as much as that, too. I agree, for the most part, with @batari -- your observation about homebrewer time is way off the mark and can't be left unchallenged. I know this will be drowned by the "I got one!" posts, or bitching about how "I didn't get one yet this sucks".
    13 points
  2. http://www.virtualdub.org/beta/Altirra-4.00-test31.zip http://www.virtualdub.org/beta/Altirra-4.00-test31-src.zip Debugger: Added Step Over support for JSR (abs, X), JSL, and MVN/MVP instructions. Debugger: Added .loadstate and .savestate commands. Debugger: Added go cycle relative (gcr) command. You can now right-click on items in the menu to jump directly to the corresponding command in Keyboard Shortcuts to rebind it to a new key. This works for any menu item that has a command associated and is rebindable. Added an advanced configuration variable to allow d3d9.dll, d3d11.dll, and dxgi.dll to load from the application directory for ReShade compatibility. In Tools > Advanced Configuration, change engine.allow_display_library_overrides to 'true'. Fixed a couple of bugs in save state loading, including a bug in mid-instruction restore in the CPU and a crash with restoring the register queue list in GTIA. POKEY serial output state is also saved to fix some issues with disk reads stopping across a load. The Quick Load State menu option is now grayed out when there is no quick save state. Fixed a minor error in the DOS on the Additions disk where it printed the wrong message when using 'cart' with no cartridge. XEP80 handler updates: DSPFLG is now correctly handled; v0.91 has a fix for the bug that broke FastBasic. Changed LMARGN default to 0 to match the stock XEP80 handler. Another nice catch, but that wasn't quite the problem. The XEP80 never scans for spaces, it only checks for EOLs at the end of lines as the logical line end marker. Only the handler on the computer side does space scanning (which is what causes the status line hang bug). Delete char will shorten the logical line if it deletes enough chars to pull EOLs into the last physical line, thus splitting the logical line, but that isn't what was happening in your case. You can see the EOLs in the framebuffer by switching to the internal character set with XIO 20,#16,12,216,"E". The actual issue is an apparent bug in the XEP80 firmware where its delete line command only deletes the part of the logical line starting at the current physical line, so it will cut part of the logical line and splice the rest against the next. The emulation was matching the standard E: behavior of deleting the whole logical line. I've removed the check to find the start of the logical line and that fixes your test case.
    13 points
  3. That's one of the most false statements I have ever seen on this site. Some homebrew authors have worked on 2600 projects just about every day for decades. And you think they have invested far less time? There have been several homebrew projects that exceeded $10k. Do you think they invested "far more" than that? This is exactly why some of us are wondering about the elitist attitudes, because you have basically minimized the efforts of homebrewers right here, exactly the thing some of us are talking about.
    11 points
  4. Blizzard here! At least a foot and a half of snow, Wind starting to howl, Power just flickered, can barely see across the street. I'm watching the movie Outland (Paused). I went out on my sunporch and thought I saw movement outside. I shined my flashlight on the ground, and saw what at first glance looked like footprints in my backyard, right on the other side of the glass...Then Something fell right in front of me! Turns out, the snow had built up on the power lines and the wind was knocking it off in big chunks, which caused the movement and the prints! *(I may need some different pants! LOL)*
    8 points
  5. The next releases are being prepared, as the newest ones are almost all shipped. Many of these are already known to be coming, a few upcoming ones are not in this list. Enjoy, and thanks to all involved and the programmers for the hard work, without them none of this is possible for the fans! XOR PETER THE PEA FRANKENSTEIN'S MONSTER NI FELTER TEMPEST UNLUCKY PONY CASTLE OF DEATH WHALE HUNT SPACE VERSUS TRIPLE CHALLENGE VOL. 2 GRAIL OF THE GODS
    7 points
  6. Thanks for all of the kind words, all. Honestly it's been a treat working with the MiSTer devs, who deserve the lion's share of credit here. Speaking of credit... the devs were looking for expertise on implementing 7800 colors/palettes, so of course our color guru @Trebor got pulled into the discussions. Trebor has provided the devs palette files they could use directly, general info on the subject, and guidance on which palette choice is going to look best overall as a default. So a big thanks to him from me, for that.
    7 points
  7. Agreed. And this higher then usual, (well hell, higher then ANY previous known aftermarket cartridge release) “mass production”, is the KEY thing that truly does separate the Audacity “team” from any and all previous “aftermarket” (Homebrew if you will) 2600 publishers. These guys are clearly VERY serious about doing this and they do deserve to be seen in a different light then all previous aftermarket game efforts. I was finally able to see the entire video from start to finish last night. And I agree, not sure how/where the “elitist or arrogant” comments stemmed from, all 3 were just as friendly, honest, humble, and entertaining as I found them to be in person when I met them. To the point where I regret having chimed in with my comments before having seen the actual video for myself. Look at it this way. These guys put quite a bit of time, money, and effort into this venture. (far more then any other “Homebrew” author has done thus far) And it’s a venture that has no guarantee whatsoever of ROI for them, thus, by definition, a labor of love. And they were basically revealing all of this publicly for the first time. So even if they misspoke a couple of times, how could anyone hold it against them. Most of it was clearly attributed to their true love and excitement for what they do; designing, programming, and producing Atari 2600 games. I signed up at their site late last night. I will definitely be buying their game, and likely buy the others that they make in the future. Not just to support them and their efforts, not just because it’s a great game, but because I truly feel their carts will compliment my Atari collection.
    7 points
  8. Quick Note: I think the AtariAge Homebrewers are Legends, Too! I hope they realize that they have, for years, given me a reason to get out of bed in the morning and I hope they don't ever feel underappreciated. They do Amazing work and put out technologically advanced, fun to play games, from the heart that are at or very often above the level of the commercial releases back in the day. That said, other than a few comments (from either side and the peanut gallery), which could be misconstrued/misinterpreted/taken out of context, I'm not really seeing an Us Vs Them attitude which some people (unfortunately) are. Even looking at the title of this thread and considering what is going on today, well this is their moment, their game. That's why we're talking about it, and it in no way shape or form discounts what the amazing AtariAge homebrewers and community are (also) doing...
    6 points
  9. 7800basic v0.18 is now available at the github releases page. Whats new, compared to v0.17: User interrupts and DMA enable were made a little kinder and gentler. Interrupts now won't trigger until you've completed a drawscreen or page flip. New options added to the 7800header menu. The main purpose of this release is to make it impossible to create boot-time race-conditions between your main code and the interrupt. If you don't know what that means and you use interrupts, you should probably update.
    6 points
  10. Just have to say, it was around 8 years ago when RevEng willingly stepped up and assisted with MESS emulation of the Atari 7800, ultimately bringing an accuracy level never seen before under software emulation to the masses. Seems apropos his hand is now involved in bringing the FPGA implementation of the console to a level also never made available before to the masses. The cycle accurate achievement here is quite astounding. If only he would develop a programming tool for the masses as well. Actually, do you know what we really need? A repository for development on the 7800 platform. "Thanks" just doesn't seem to cut it.
    6 points
  11. Hæ everyone ! It took a while but I finally have a version I am happy to call "done". I may tweak little things but everything I intended to implement is in and working. In this standard 4K ROM I managed to fit 5 areas with non-linear design. More than 15 enemy types and variants, key items, health potions, and importantly something resembling sound. This has been an absolute labour of love for me, and more than proud of what I have been able to do with no prior experience making Atari games. I hope you enjoy playing this. https://aeriform.itch.io/beast I'd like to thank everyone that has supported the development of this game, the kind words, and amazing tips on how to optimise and handle certain problems.
    6 points
  12. A heads-up that I've been working with some of the MiSTer FPGA devs (Kitrinix and alanswx) on the 7800 core. Mainly I've been the 7800 programming answer-man, creator of various 7800 test programs, co-analyser of problem roms, and guy responsible for updates to the a78 header. I take no credit for any of the VHDL, nor the painstaking hardware analysis being done (but they are using 7800 logic diagrams directly provided to them by no other than Curt Vendel... that guy is still making an impact!) and frankly I'm awed by the level of skill and determination being displayed. It's my pleasure to say the in-progress 7800 core is now freakishly accurate, despite all of the torture tests I've thrown at it. This is not surprising in retrospect, given the attention to detail being thrown into this project. I know real 7800 consoles are getting expensive, especially in certain parts of the world where the 7800 didn't see wide release. A simple de10-nano and 32m memory card may be a good alternative very soon, and if you're interested in any of the other systems, it can be a cost-effective one. (the MiSTer wiki has a good overview, and details on what those other systems are) In case MiSTer FPGA somehow hasn't been on your radar, RMC has a decent intro video...
    5 points
  13. Okay, this could be a new thing that goes viral. What do you see? I've had it with these motherf*#@king snakes on a motherf*#@king convey!
    5 points
  14. ok, so 90 VIP editions, a minimum of 299 collector's editions and a minimum of 128 standard editions means that first hour sales are no less than 517 which is pretty good for a 2600 game. ideally, the interest in new 2600 games from the "Old Masters" will also help stimulate sales in existing and new AA published games as well. We'll see!
    5 points
  15. If they're planning multiple releases, and if their research indicates that they can expect to sell thousands of copies per game, I can easily see them wanting to go with a large initial order, along the lines you suggest. Tooling a new injection mold is not cheap, as I'm sure you know, so it makes sense that they'd want to spread that cost over as many games as possible. It also makes sense to me that they'd want to create their own boards and shells: it may seem like a duplication of effort to do so when other boards and shells have already been made, but by making their own, they're locking in their costs and keeping their inventory under their control as much as possible. As @fdr4prez points out above, they also seem to be rethinking the way that cartridges are designed. After surveying the field, they may simply have decided that the existing designs didn't suit their needs. In particular, I really like those cartridge door key prongs built right in to the PCB. Unless I'm mistaken, this is the first time that has been done in an Atari 2600 cartridge—(EDIT: not quite; see below!)—and it is a novel solution to the problem of finding a replacement for the (complex and costly) spring-loaded interlocking dust doors that Atari originally used. As everyone here knows, Atari later switched to a cheaper two-piece shell design that had the key prongs molded directly into the top half of the shell; the tradeoff was those cavities under the face labels that everyone hates so much, as well as brittle key prongs that were too easily broken. It's a lot harder to break a PCB, which is one reason this approach is such a good idea. Another is that shells made for these boards could be used with the 7800 as well, if they wanted to; all they would need is a revised version of the board.
    5 points
  16. Watching a YouTube video on Intellivania, an Intellivision port of the NES Castlevania - WOW! This is sheer genius!
    5 points
  17. CPUWIZ is not only single-handedly THE most reputable person here (Albert excepted), he's easily THE most stand-up guy on AA and, no joke, *THE* reason I came back after so many years. Not to mention he has given, not sold but GIVEN, more to this hobby than myself or 99% of the AA users.....COMBINED. I understand this may be how you perceive things went. But knowing what I know I imagine there's more to the story and honestly, I'd take a bullet for the guy.
    5 points
  18. This is the torture that the U.S. used to get the Russians to give up their secrets during the Cold War.
    5 points
  19. Snakes? Why does it always have to be snakes?
    5 points
  20. 5 points
  21. Apparently both the TIA and Maria WSYNC registers both work to wait for sync in 7800 mode. The interesting thing is, both chips have their own horizontal sync and counters, which are running in parallel. I put together a quick little demo that shows a few color bars drawn with the background color and each kind of WSYNC. Basically the idea is hit WSYNC, change the color, wait for 40 cycles, and then change the color back to black. At the start of the TIA WSYNC rectangle, I need to hit RSYNC, so TIA begins the bars aligned with Maria, and drifts more after each line. Apologies for the crap photo, but it's better than none, which was the choice. Interestingly the TIA line is longer, despite running at Maria speeds for most of the line. On the occasional run of the program, the TIA bar alignment flickers badly. I think the free running TIA sync gets messed up if you hit RSYNC on a particular cycle. Maybe. I don't think there's anything of practical of use here (hence "pointless curiosity") but I thought it was kind of fun to have a peek at TIA's video generation going on behind the scenes. tiamariasync.bas.a78 tiamariasync.bas.bin
    4 points
  22. Exotic dildo-headed bombs with only one pink leg to stand on?
    4 points
  23. "If only you could see what I’ve seen with your eyes."
    4 points
  24. I halfway jokingly told Osman that I might have to really try at making a TIA version of the soundtrack if emulating bupboop isn't possible sand.bin
    4 points
  25. I looked at that photo really quickly and it almost seemed like darcy was not wearing any pants...
    4 points
  26. In the Horizon Ramdisk config program, I look for the CLIP device as a Classic99 indicator. I cannot speak to a preferred method but it has worked (so far) for my purposes.
    4 points
  27. 1. Barrel DC connector 2. "Sophia" DVI connector 3. 8 pin DIN video connector that support "VBXE" or"UAV" or the standard Atari video 4. PS/2 connector plus the keyboard "special keys" for "AKI" 5. 22V10 GAL EMMU or the stock Atari one 6. Cartridge and ECI back pin headers. 7. Extra signal header near the Freddy needed for "VBXE" 8. Radial Capacitors versus rare Axials.
    4 points
  28. Amazing stuff my friend - enough words literally can't cover your contributions to the 7800 over a long time now. The position the platform now finds itself is due in part to your hard work and effort. Thank you mate ???
    4 points
  29. I'm a bit of a sucker for late 90s, early 2000s game systems, so I bought this Neo Geo Pocket Color off Ebay. It was listed as "broken", but the only problems I had with this handheld were having to deal with some of the battery contacts being snapped off and the battery compartment being caked with a strange, brown substance.
    4 points
  30. If you get that working in MAME, @9640News, you may also be able to do the same thing on an HRD4000B using a second 74HCT154 and a second layer of memory chips. The HRD4000 design in general was designed to support up to four layers of chips (also requires using dual-stacked 154s), but the drive size limitations basically prevent use of anything larger than about 8M on a /4A. That limitation effectively disappears when using a single large drive on a Geneve. Do note that no one has ever tested one larger than 8M as a single Geneve hard drive yet, as the largest HRDs currently in the wild top out as single-layer, 8M boards. Oooooooh, four layers of 512K chips would give you a 32M RAM Disk. . .
    4 points
  31. I dunno? I only have metal TI shells inside my PEB. The card I grabbed at random was the 32k card. I am about 45% done with the initial modelling of the clamshell. (90% done with one side.) I have taken the liberty to .... beef up... the studs and screw posts, so that a 3D print would actually be serviceable. I still need to cut the vent holes, and make the recesses into which the wire pull tabs go. (also needs the M3 standoff holes put into the studs) to keep it easy to print, I have made the sticker area not be recessed. I just made a groove in the outer surface of the case to indicate its location. It is recessed in the original PEB card shell. I will continue working on it. I am unsure if my printer can make this though. If so, it will take up the entire allowed Y axis. The metal ones I have come to suspect, were cast. There is a 2 degree draft angle all over everything. Incidentally, this means it should be possible to make resin shells. (use silicone mold builder to make a negative of the shell using an original, then pour some resin.)
    4 points
  32. Please release these in stages. Please!!!!!!! I have and Atari 8-bit, TI-99/4a and Turbografx 16 collection to feed as well. Oh yeah, and a wife and kids. Them too!
    4 points
  33. More Intellivision fan reactions to report on Zaxxon by coleco: “MAN this game sucks but I’m sooooooo good at it so I don’t mind” - Rickster “I thought the Intellivision was supposed to be better than Atari... NOT” - Atari players trying coleco games on Intellivision “I know I’m not supposed to like coleco games, but it’s not that bad” - Fakecortex ”The more everyone hates these games, the better I place on the leaderboard” - CMadruca ”The graphics need work... but you should see the intricate programming that went into this game ... ah who am I kidding? This game does suck!” - Mr. Me “This game sucks ass” - Sparty
    4 points
  34. Below is a simple XB program. 100 CALL CLEAR 110 A$="Hello World!" 120 FOR I=1 TO LEN(A$) 130 CALL HCHAR(10,I,ASC(SEG$(A$,I,1))) 140 NEXT I 150 GOTO 150 Compiling this program produces the code below DEF RUNEA,RUN,RUNV,CON RUNEA B @RUNEA5 FRSTLN L100 DATA CLEAR L110 DATA LET,SV1,SC1 L120 DATA LEN,SV1,NT1 FOR1 DATA FOR,NV1,NC1,NT1,ONE,0,0 L130 DATA SEGS,SV1,NV1,NC1,ST1 DATA ASC,ST1,NT1 DATA HCHAR,NC2,NV1,NT1 L140 DATA NEXT,FOR1+2 L150 DATA GOTO,L150 LASTLN DATA STOP OPTBAS DATA 0 NC0 ZERO DATA 0 ONE DATA 1 PI DATA 3 RND DATA 0 NC1 DATA 1 NC2 DATA 10 NV0 NV1 DATA 0 I NT1 DATA 0 SC0 SC1 DATA SC1+2 BYTE 12,72,101,108,108,111,32,87,111,114 BYTE 108,100,33 EVEN SV0 SV1 DATA 0 A$ ST1 DATA 0 SA0 NA0 FRSTDT LASTDT EVEN ENDCC COPY "DSK1.RUNTIME1.TXT" COPY "DSK1.RUNTIME2.TXT" COPY "DSK1.RUNTIME3.TXT" END The heart of the runtime routines is the code below. When the program starts up, R13 points to FRSTLN. At L100 the address of CLEAR is read and put into R12, then B *R12 goes to CLEAR. Since CLEAR uses no input, the screen is cleared, then B @RTN is performed. Now it goes to LET which knows to look for two addresses. In this case it gets SC1 (Hello World!) and plugs that into SV1 (A$) And so on... You can see there are two parts of a compiled program. The compiled code is nothing but labels. There are no assembly instructions. Then the runtime routines have to be able to use those labels to mimic what XB does. RTN LIMI 2 the main loop, all subs come back to here LIMI 0 MOV *R13+,R12 B *R12 r12 has code. i.e. GOTO, SPRITE, etc.
    4 points
  35. Bought this after midnight last night (thanks beer), so it counts for today. I think I'm going to have my hands full between this and the Channel F.
    4 points
  36. Little Milestone : World 2 is complete. Woohoo!. ? I also found that I had under budgeted and was able to add another couple of screens that I'd originally cut. Just finalising all of the greebles and details and balancing things a little. One of the screens had a Gandalf moment and was like "you shall not pass" - swiftly fixed. If anything I think World 2 is easier than World 1 but then again, World 1,2 and 3 can be completed in any order and World 1 was originally way too hard (plus the new collision system means things aren't as brutal). Now for the dreaded RAM reorganisation. New demo soon.
    4 points
  37. after all, you haven't heard new music on POKEY in the game yet ... the sounds you hear will shock you, and in an instant they will take you to the happiest moments you have experienced. fat bass, solos, almost mystical tastes ... as if baby Jesus would touch your ears with his bare feet.
    4 points
  38. I think we have successfully merged the Intellivision box with a NES black label box design.
    4 points
  39. Maybe Todd just thought "why stop here?" and decided to make it as ugly as he possibly could.
    4 points
  40. Have you tried turning it off and on again? FWIW, I'm from the US. Bob
    3 points
  41. Atlantis: Rollage I never thought double-hitting the joystick button repeatedly for about an hour could be so exhausting. This game felt like being in an endurance challenge on a reality TV show. This experience gives me a new appreciation to those who must have played 7-8+ hours to get the world record scores posted on Twin Galaxies although short breaks may be possible if you rack up enough bonus lives.
    3 points
  42. This box looks great. It instantly reminded me of the Epyx boxes from the 80s,mostly for my Commodore 64.
    3 points
  43. Money's tight and even though I sometimes like limited editions and I do like digital copies...I'm just going for the regular edition. I have no plans to eBay it so who cares if it's "worth" more? Also, for some reason I like when limited editions feature different colors of the cartridges themselves (like certain CollectorVision ColecoVision releases or an Indiegogo SNES game I backed).
    3 points
  44. I'm thinking about tweaking the color a bit. On a CRT it's hard to tell the difference between "your man" and the white enemies. I need to spend some time trying the options. I don't have anything like that on my PC, but I test on my real system with an Atarimax cart. You can expect one soon, probably next weekend. I have a few bugs and adjustments I want to make first. I spent most of today doing my taxes but I had some time to get a few things done. Mostly little details like handling all four players wanting to pause the game in battle mode. Also made a few bug fixes here an there. Just for fun, I did this: I decided to make the game track the low score as well as the high score. Seemed like a fun thing to do, so why not? This screwed up some of the coloring code (you can see it in the second row of the enemies) but I fixed that. Right now I'm focusing on getting an acceptable test ROM ready for next weekend. It might even have some primitive sound effects.
    3 points
  45. Seconded. Now it's my turn to annoy some people ... I think this attitudinal shift in the community is related to the generational shift that Glenn mentions. We've seen an influx of younger people who are new to classic gaming, and also people who had a 2600 when they were kids and are now returning to classic gaming after a long absence out of a sense of nostalgia. They have brought a much different mindset into the community from the prevailing one that I remember from ~25 years ago, when homebrew games for "dead" systems like the 2600 was a much smaller hobby. Back then, you had to be pretty deep into "the scene" to even know that there was such a thing as homebrew games in the first place. You were perfectly happy to drop a check or money order in the mail, wait patiently for four to six weeks, and get a humble 4K game in a plastic baggie—complete with a recycled cartridge board and shell, a scissor-cut label and a folded manual printed on a cheap home printer, and artwork drawn by the programmer on graph paper—because you had more of an appreciation of the entire process that went into creating it. Enjoying that process, and that there were fellow hobbyists who shared your interest in it, was an integral part of enjoying homebrew games, because there was an understanding that it was a true labor of love for all involved. Among other things, the shift that has happened since has lead to very different expectations. People now want easy online purchasing and lightning-fast turnaround just like Amazon, they want convenient digital distribution just like Steam, and they want their games for a few bucks each (or even less) just like mobile games. Oh, and they want the games to have the same production value as a commercial release, and to utilize all the latest technical "tricks." If they don't get it, they come to forums like this one and complain, just like they do with multi-million-dollar games that fail to meet their expectations. They may genuinely enjoy classic games, and they may genuinely want to support the homebrew authors, but they don't have the same sense of history or the same technical acumen that the average hobbyist used to have, and so they don't understand the full implications of what they're asking for. Of course, creators and publishers of homebrew games (however one defines the term) have nevertheless risen to the occasion and have found ways to meet many of those expectations. Partly, it was done for their own convenience; printing individual labels and manuals as one-offs is time-consuming and annoying, and buying up and repurposing old cartridges is unpredictable and highly labor-intensive. It's wonderful that we now have resources which make it so much easier for an individual to source professionally-printed labels and manuals, and to have new cartridge boards made, all at relatively reasonable prices. (New plastic shells are still more expensive, of course.) It's also wonderful that options like the AtariAge Store's Custom Cartridge Service now exist for people who can't do all that by themselves, or who simply prefer not to. If someone had taken a homebrew cartridge from AtariAge made in 2021, and showed it to me in 1997, I would have been amazed that such a thing was even possible—and even more amazed that I'd be making cartridges myself someday! But, as much as today's homebrews may have some of the trappings of commercial releases, I think it's a mistake to treat them as such or to bring the same expectations to them, or to the people who make them. I also think it's a mistake to confuse new games that are made for the 2600 as labors of love, and new games that are made for the 2600 as commercial products, and I think there's a bit of that confusion happening, too. The people behind Audacity Games have made it perfectly clear that this is a commercial venture for them, and there's nothing wrong with that. Yes. Unfortunately, this is another modern trait that has crept into the community. Social media has trained people to take what someone says, to read their own meaning into it—whether it's an implication they're imagining or an outright hallucination—and to respond to that, usually loudly and angrily, and not to what was actually said. I wasn't going to comment on anyone's impressions of the ZeroPageHomebrew interview until I'd heard it myself; I'm listening to it now, and so far I have no idea what you people are talking about when you say they came across as "condescending" or whatever, because I am not seeing that at all. They're simply approaching the development of new 2600 games from a much different context and perspective from yours. They specifically called out homebrew authors, and specific tools that they've used; what more do you want from them?
    3 points
×
×
  • Create New...