Jump to content
IGNORED

Space Invaders 78 Disassembly


Blue Azure

Recommended Posts

This is my first post so I plan to make it a good one...

 

I've been enjoying Bob's Space Invaders for 3 months now. Best port from arcade I've ever seen. It's time to give back, so I disassembled the code, at least the logic portions. The bit mapping is a mystery to me still.

 

As a direct result, we have an enhanced game play with Space Invaders 99 LIVES. Guaranteed to improve your scores! Will you ever lose all your lives? Simple mod to the game code in three places, 63 hex = 99 decimal. We know this because 6x16^1 + 3x16^0 = 99. I suppose you could use FF hex and have 255 lives, but who cares? I included PAL versions but how many users use this?

 

NTSC Space Invaders 99 Lives.bin

SI_99LIVES_NTSC_50C0.bin

NTSC Space Invaders 99 Lives.a78

SI99Lives_NTSC_16K.a78

PAL Space Invaders 99 Lives.bin

SI_99LIVES_PAL_4C91.bin

PAL Space Invaders 99 Lives.a78

SI99Lives_PAL_32K.a78

 

Christmas Quiz…Can you figure out how to do these variations?

> Disabling the player collision detect…

> When invaders hit bottom, the game isn't over, simply jump to the next level…

> Speed up bomb drops to max…

> Score points when you hit the bombs…

> Double fire like in the 2600 version...

 

Many thanks to Bob DeCrescenzo. Efforting this disassembly project I have special appreciation for all the work you did. It's extraordinary work you did. "Maybe you guys can do something with it." So we can, thanks to you.

 

Future Projects…

Does anyone have CENTIPEDE.asm? PACMAN.asm? I need those. THX.

 

MERRY CHRISTMAS TO ALL!

Link to comment
Share on other sites

Thanks for your reply Rybags. Yes, I have all of Bob's that you listed there (and many others). That's precisely where I found INVADERS.asm that I'm working with now. I was hopeful, and still hopeful, to obtain the original PACMAN.asm (2005) and/or PACMAN.asm (2006) which are both 16K titles.

 

I still hope someone can help me determine the bit-mapping schemes for the UFO, Invaders and Player in Space Invaders.

 

Meanwhile, I have cracked the Space Invaders player collision detect so I should have a new release ready any day now. It's in testing now.

 

I am now in the process of disassembling Centipede, checksum = 2679. I have a batch of "old" and "new" C-coded files, but it's a mess with gaps in code, etc. I wish KGO were here to provide the CENTIPEDE.asm to match the EPROM checksum = 2679. Just the same, there's many errors in the code, and I'm wondering how it can even run. There are illegal OP codes (as I see them). Perhaps GCC knew something I don't. I changed the codes to the correct codes and it seems to run identically. I'm sure we'll hash this out later...

 

But PLEEZ, if anyone has the latest & complete CENTIPEDE.asm, please share!

Link to comment
Share on other sites

7800 graphics tend to be stored backwards with each successive line of pixels 256 bytes before the last one.

 

You could make a quick/dirty rip of sprites by generating a BMP file 256 colour indexed with 256 pixels h * 256 pixels v (more v if a large cart image). Make sure the palette entries are populated (Photoshop can do this).

 

Strip the header (1078 bytes ?) off of the BMP file and keep it. Append the Rom dump to that stripped header, ensuring the Rom dump has no header itself.

 

Graphics should become visible within the new file.

Link to comment
Share on other sites

7800 graphics tend to be stored backwards with each successive line of pixels 256 bytes before the last one.

 

You could make a quick/dirty rip of sprites by generating a BMP file 256 colour indexed with 256 pixels h * 256 pixels v (more v if a large cart image). Make sure the palette entries are populated (Photoshop can do this).

 

Strip the header (1078 bytes ?) off of the BMP file and keep it. Append the Rom dump to that stripped header, ensuring the Rom dump has no header itself.

 

Graphics should become visible within the new file.

Many of the graphics modes also scramble the bits around within a byte also which might not make them very visible depending on the mode. I don't remember off hand if the hi-res 1 color modes do or not offhand.

Link to comment
Share on other sites

Crap, yeah - I was thinking VBXE there. 8 bpp mode won't help at all.

 

You'd want the docs for 7800 programming due to the different bitmap formats - ripping isn't straightforward as it seems due to the messy format of some modes.

 

Creation of graphics within the code - not straightforward either due to the graphics indirection, ie you have DLL then DL entries per zone and objects can span multiple zones.

Link to comment
Share on other sites

OK, I'm getting it now. I was hopeful for a "simple" solution, re- bit mapping. There were a couple of SI hacks in the past which changed the Invaders, Player, and UFO (and shields) and the code change was complex. Now I have great appreciation for went into that. Fantastic work done by somebody on here. Still learning about 7800 programming...not so easy perhaps. I can code all day, but that doesn't completely make the 7800 purr. Back to the drawing board...

 

The SI disassembly stands as it is then. If anyone finds errors, let me know. It's a ton of work and easy to have error(s) so I'm not fully guaranteeing the complete work. Loved the humor...NO DISASSEMBLE! Yes, there are 16,384 reasons not to disassemble SI. And 32,768 reasons not to disassemble PMColl. But I'm ignoring them.

 

Bob hasn't complained yet...this is just another way to expand on his legacy. He knows. We've gone open source unlike anyone else. It's a good thing.

 

NEXT UP...CENTIPEDE cs=2679 disassembly is complete, less cross check and a sample mod. Should have it released within a few days, I hope.

Link to comment
Share on other sites

Sorry for the delay in responding to you tep392. I don't camp-out on AA.com too often, I'm too busy. Good question, why would I disassemble assembled code? The #1 reason is it hasn't been done yet. I reviewed all the AA.com history of the last 11 years and never saw it. Another reason is I'm looking for programming tricks. And the place to find that is in the original games that GCC programmed. They designed the original machine and they were the original programmers that figured out how to make the machine work. Another reason is I'm creating my own series of invincible games, that I can actually play and enjoy. I never got over 10,000 points on Space Invaders until I created the new-era version. I have a Robotron mod that blows away all shooters ever produced, anywhere. I handed one to one of my partners and I haven't heard from him since. So we know this is a good one. If you want to trash one of your proline joysticks this will be the game that does it. It's called Robotron X and you'll be seeing it soon. It's so crazy it crashes the Prosystem Emulator, unless you're quick enough to kill enough enemies so the emulator can handle whatever is remaining. Will I disassemble all the games? Heck no. But the original 10 games, 11 including Ballblazer should be done. And another reason...just because you have a source list, it doesn't mean you have a match to the code that was produced in the cartridge. We know the EPROM does not lie, whatever is in there is the code that makes the 7800 tick. Also, not everyone here has a Kontron development system in their garage or the tools to actually view the code. Now it's on rich text format (.rtf) which is viewable even on Word 6.0.1 on OS9. Someone out there is going to go crazy with this new found resource and create new stuff you're not gonna believe. Will it be you?

 

Now I may sound like I'm ranting, but that's not it at all. This is exciting to see what these guys did about 30 years ago. The Atari 7800 was the ultimate in video gaming in 1984, and in 2013 we're still talking about it. Meanwhile, it's not easy to program video games. It takes literally 1000s of untold hours and I'm spending 100s of hours doing what I'm doing. Now you or someone else on here could help. There's two ways to help...

 

1) Hook me up with a tool that reliably creates the hex from the source code, so you have the column of addresses and the columns of op codes and operands and raw data. I had one tool back in the hay day called DDT - Jim Dunion's Debugger Tool and it worked on the Atari 800 computer. Files could be stored to the 810 disk drive - I think it was 80 or 81K, 68K formatted. So a couple of 32K games would fit on a floppy. What a concept. And the results could be printed on the 825 Printer's fan-folded paper. But I'm not using that equipment any more. I have a PC and I have a Mac, and a Mac running XT as a Mac, and with this I can do most anything. I have used dis6502.exe to assemble raw binary files, but it doesn't give me the op codes, unless I'm doing something wrong...which could be. So I'm still looking for a tool to streamline this process...

 

2) You or someone we know can disassemble one yourselves. I could hook you up with the disassembly start of Bob's Pacman Collection (PMC) Arcade/Pokey source release and you could do the project yourself. There were several releases of the PMC code, but which one is the match for the source he released? There was the Final, the Remake, Versions 4,3,2,1 and the small dots series with more versions at http://www.atariage.com/forums/topic/190980-pac-man-collection-pokey-with-small-dotsis-it-possibleattn-pacmanplus/. But which is the exact match? It's Version 4, not the remake or the final version. What's the difference? I don't know yet, but it's in the blog here somewhere on AA.com. I was asking for the original Pacman (2005) or Pacman (2006) source lists, but of course the original was Crazy Otto, and before that was GCC's Ms. Pacman, which we do have the source for. Let me know.

 

Meanwhile the Centipede disassembly is complete, and a new-era sample game is done. As soon as I can create the presentation for that, I will deliver. I'm looking for my trakball to test a version of the game, but still no luck finding it. That has been one hold-up. Stand by, it's coming...

Link to comment
Share on other sites

Hi:

 

I'm not following your thought process 100%, but I posted the source code for the games I created for people to learn from and create their own games from. One of the reasons being that I am not anywhere near as gifted at explaining things as some other developers on this board might be. The version of PMC I posted is the TIA version because Perry did a lot of work on the Pokey version and I don't feel it's my place to post something that is partly his hard work as well. Having said that, it's always the latest release of anything I've posted.

 

Regarding the original Pac-Man hack I did, even *I* don't have the source code for that any more, as PMC was meant to replace all 'stand-alone' versions of Pac-Man, Hangly-Man, Pac-Man Plus, and so on. The only one left that is still separate is Crazy Otto. I did not post that as it is basically the same as Ms. Pac-Man but with different graphics.

 

Thanks,

Bob

Link to comment
Share on other sites

Yo Bob and Perry,

 

Greetings and hopeful to Bob his health issue will be resolved completely and as soon as possible.

 

True, Bob, I understand that you (or Perry) don't understand 100% what I am doing. I hear that all the time. I design, but I'm not a designer. True blue designers look at what I'm doing and ignore it. And the reverse happens as well. And then the designers do what they do, and I do what I do, and the results pile to the floor. I say "Wow" to what the designers do and the designers say "They said it couldn't be done..." That all said, what does that mean? Well, I can't tell you that right now. Just know that a ton of hardware design, software design and even firmware design is in progress right now. We've barely scraped the surface on what can be done on the 7800. How can that be after all these years? Well, maybe we're about to find out...

 

I have a question for Bob, or a couple of questions. If I handed you a 7800 NTSC BIOS EPROM with special code on it, should it be on a 2732 or a 27128? (Or, I assume with the binary you can burn an EPROM). Does the 7800 BIOS that runs on a 1984 machine work on a 1986+ machine? Cuz both the 1984 and 1988 BIOS run on a 1984 machine. Either way, what I have will work on the 1984 machine, and you *need* to have this.

 

Now getting back to the topic at hand - disassemblies. I've halted work on the PacManArcadeCollectionPokeyV4, cuz other priorities have taken over. Are you saying I don't have permission to post up my homebrew version of the homebrew source listings? If so, I won't do it. So tell me and it's done. The legacy of 7800 SI is out there right now and people are lovin' it. Hopefully that isn't a problem...as it shouldn't be.

 

The following is true...

1) Nobody knows everything, and I'm a nobody.

2) My mission here on the 7800 forum is to learn and have fun, not necessarily in that order. Suffice to say, it's all FUN right now.

3) I build what I want to play and share the result. Any complaints?

4) I understand the sensitivities of "source code" listings. These are the treasured personal property of their respective creators. It's their life, it's their everything. Once released, it can be considered "fair-game" by some people in the world. We know that no one at the former Atari, Inc., or Atari, Corp., or later breeds of the former Atari image cares about this code, and GCC personnel seem to be supportive with the work we've done so far. So I'm dissecting the code and creating new-era versions that have the look and feel of the original version. Isn't that the ultimate gratitude paid to the original creator? Of course it is.

5) I do NOT and have NOT ever built or sold any EPROM-based 7800 cartridges. Not a single one. It's not likely I ever will. I design, I mod, I do what I do, and move on. Besides, in the present-day Atari 7800 universe, there's no money in it. We do this for the love of the game and the knowledge that people love what we do. That said, we've got a problem Houston. Cuz this 7800 Robotron X game that's about to hatch tends to crash my Prosystem Emulator, although maybe that's because I'm running XP on my Mac running as a Mac (I can run it on a PC running as a PC and report the results, I just haven't gotten to that yet). It works 100% on cart so that's all good. Will people be clammering for this cart? Probably. We'll soon see the customer comments...

 

One last thing. I found the disassembly tool I was looking for. But it's in C-code that must be built into an app. I'm a total dorque (sophisticated dork) when it comes to this. The tool is located at http://www.emulator101.com/6502-disassembler/ and it's free and easy to download, etc. Now I need to get the XCODE to work on Mac or improve at Command Line on the PC, to create the .exe or .dmg application I can actually use. Can someone help me with this? Cuz I need this to fix busted 7800 code. I can use either or both, so gimme both. THX.

Link to comment
Share on other sites

Hey!

 

To answer your questions:

 

1 - The 7800 BIOS: I've actually never even tried to replace the BIOS on any 7800 that I had. I was looking into it once (with another user here) and just never got around to following it up. Someone who has done this might be able to answer that question better.

 

2 - Source code - you absolutely have permission to post up whatever version you like of the games you've changed/hacked/created using the source code I posted. I couldn't post it and expect someone *not* to do that. :) I did that because I am leaving the hobby (originally in October, but I can't leave Bentley Bear almost completed and not see it through). There are other 7800 developers here that are eble to explain things better than I ever could so other people can develop, and posting my source code is my way of doing that.

 

I too look forward to seeing what you create. :)

 

Bob

Link to comment
Share on other sites

Cuz this 7800 Robotron X game that's about to hatch tends to crash my Prosystem Emulator, although maybe that's because I'm running XP on my Mac running as a Mac...

 

You run Prosystem Emulator on you Mac? I use Winonx run that, it saves me the trouble of running Windows at all.

Link to comment
Share on other sites

I know what happened...Bob's dog ate the source list (!,?). It happens all the time. I've got permish and that's what I was hoping for. The job at hand then is to DA the Version 4 and port the source to the Final. I hope to find that specific post that showed the progress of the development of PMCAP, which in english is PacMan Collection Arcade Pokey, and it included discussion of V1,V2,V3,V4 and so on. I obviously have the binaries of V4 and Final, which is what I really need. It will be some time before that happens, as it turns out I do have a life and other things to do. In my opinion a "Hobby" can be done anytime in one's life. I'm looking at making a dash at all the major stuff we can do in 2013, and then when I retire in about 10 years, I've got my little "Hobby" set up - programming 7800 games. Also, in my opinion the PMCAP is a classic 7800 title for all-time. For someone who returns in 5, 10, or even 20 years, they will be looking for this one. It's here...and I want to make sure they will find it...

 

As for BIOS, OK, I'll open another topic, and work it over there. There's a firmware project I'm working on and not sure I'm going to get it to work on my own. But the part for you is done and working. We'll kick that off probably next week.

 

On the other point, bakasama, never heard of WinOnX before. Not sure it will work for me on other winapps and the reviews weren't exactly positive. What about its predecessor Wineskin? It's $4.99 cheaper, in fact free...http://sourceforge.net/projects/wineskin/ .

Link to comment
Share on other sites

You do have a point about Winonx. I've tried several programs with it. The only windows programs I can get to work on that is the Prosystem emulator and flash games in the form exe files.

 

I tried Wineskin but I just don't "get" it. I mean would love to play Torchlight 2 or see if League of Legends playable on my Mac. I just find it hard to the setup.

 

So is the point of this project is to have a disassembly that's usable on Xcode or any windows compiler?

Link to comment
Share on other sites

That's a good question. What is the point? We're not sure yet. What it does do is bring the code to the masses. Anyone can read it - anytime - anywhere. On what other video game system can you do that? None. What I do know is I can use my disassemblies in my world. Can you use it in yours?

 

The underlying factor is I'm doing what is called "Configuration Management (CM)" on the 7800 system. What this means is no stone is left unturned. I skip the current projects, they're all great and the explicit property of their respective developers. I can't and won't touch them - that's the respect I have for them. I think they should present and show new preliminary gamecode on here for beta gameplay verification and then the final spiffy code is sold on cart only. It's not big business in present-day 2013, but it's business. You'll see soon how CM works, step by step, in the world of the Atari 7800 ProSystem. As for the original 10 or so original games, every byte of every game will be accounted for. That's my goal. It's my niche, it's my world.

Link to comment
Share on other sites

  • 2 months later...

Knowing this was my original attempt at a 78XX game disassembly, I returned to bring it up to snuff. I never did a 100% crosscheck on it, but I have now. Added color, adjusted spacing, and made many corrections, and finished the DLL listing that I was in too much of a hurry to do the first go-round. Can't guarantee it's 100% correct, but it's much better now. Revision A released now...

 

SPACE INVADERS DISASSEMBLY, REV A

SpaceInvadersDisassyA.rtf

 

Now that we have this I have another variation to try out, based on the Space Invincivaders version. This is UFO INVADERS. You notice how infrequently the UFO's come across the screen? What if they continuously crossed the screen? Do you shoot the invaders or the UFO's? Also sped up the invaders to make things look more interesting. But you will soon see, speed is an illusion in this game. It starts fast and then slows so you can shoot more UFO's. Like shooting free-throw hoops, once you hit 100 UFO's in a row, you can't miss the UFO's. You don't even look at them any more. You know where they'll be and you'll fire away, threading the needle between the columns of invaders. The flying UFO sound has been also been removed to retain sanity. But the UFO kill sound remains and you'll be hearing it often.

 

There is one "bug." If you time the kill of the last invader as the UFO is crossing the screen and shoot the UFO before the game has a chance to cycle to the next level, the score for the UFO kill will remain at the top of the screen until it's either cleared by another UFO kill at the same location, or if the invaders hit the bottom, and the game automatically jumps to the next rack.

 

"Bug" screenshot

post-34769-0-24767200-1365376650_thumb.jpg

 

Try it...You'll like it...

 

NTSC UFO INVADERS BINARY

UFO_INVADERS_4ABC.bin

NTSC UFO INVADERS EMULATOR

UFO_Invaders_16K.a78

 

PAL UFO INVADERS BINARY

UFO_INVADERS_PAL_4D6E.bin

PAL UFO INVADERS EMULATOR

UFO_Invaders_PAL_32K.a78

 

The original game is on sale now at atariage.com. Still 4 years after Bob created it...

http://atariage.com/...ct_detail&p=900

 

///BLUEman///

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...