Hacking Asteroids

DanP

Administrator
Staff member
vacBacker
Feedback
5 (100%)
Credits
2,190CR
Great writeup Macro
smiley32.gif
Just out of curiousity, what were the other two conversion muted? I've got one I'd like to have a crack at should I ever find any time...

Dan
 

Macro

Active member
vacBacker
Feedback
4 (100%)
Credits
1,982CR
one was a version of a single mame driver (no idea what one!) on a mortal kombat bootleg (runs a decent speed 32 bit processor) with a suitable C compiler, no idea what the other one was.

what's your one then

If I ever did another, it would be something rare like super loco, possibly on wc90 hardware again, as the video hardware is actually programmable and can do more than it is used for aon the footy game.
 

Displacer

Newbie
Credits
4CR
Hello all. Stumbled across this forum doing some research. I'm the person referred to above that did the Asteroids disassembly. I'd forgotten all about it then stumbled across my old papers and decided to finish it, or at least attempt to. Anyway I've already started updating it, found some new zero page locations and documented them so if the guy who originally hosted the disassembly is here, let me know if you want the updated stuff, and if anyone has any questions just let me know.
 

guddler

Busting vectors like it's 1982!
vacBacker
Feedback
10 (100%)
Credits
4,055CR
Displacer said:
if the guy who originally hosted the disassembly is here, let me know if you want the updated stuff, and if anyone has any questions just let me know.
Hiya. That'll be me then
smiley4.gif


I'm just off out for the evening but I'll pop you a PM later or tomorrow. I can't remember when but at some point when it all went a bit dead i let the guys over at ionpool mirror the pages off me and I think it's still there. If there's more being done then i can happily put it back up
 

Mitchell Gant

Active member
vacBacker
Feedback
2 (100%)
Credits
884CR
It appears I'm the guilty one for this:

http://www.ionpool.net/arcade/asteroidtech/neilw_xy.txt

I've no idea how it ended up on that website, I must have posted it to someone or a newsgroup in the early/mid '90's, but it's my style of writing and my name in the filename. That's a lesson in be careful what you post out, in can stay out there on the Internet for a long time! I had found it again recently before seeing this thread yesterday.

Seeing this post prompted me to do some digging. I remember having access to an EPROM programmer at work that could read PROMs as used in Atari vector generators, so I read in the PROMs from Asteroids, Star Wars, Battlezone and Tempest, then printed them out on paper:

Asteroids_DVG_1.jpg


Then I stared at the schematics for ages and tried to work out what each state did:

Asteroids_DVG_2.jpg


Asteroids_DVG_3.jpg


I must have written that text file on Ionpool sometime after that, but have no record of it that I can find now.

I did make a lot of assumptions in there I know and didn't quite get it all worked out, but I did state that in the first paragraph!

I've got some more scribbled notes if anyone's interested with the rest of the instructions and some 6502 test code that I wrote to exercise various instructions for Asteroids DVG. But my cameraphone won't get a good image so I'll need a proper scanner to get that. I made a test EPROM so I could put it in a faulty Asteroids board and use the DIP switch to select various DVG instruction tests with a view to easier troubleshooting. Never really helped me that much though so it got forgotten about, 'til now!

One thing I did mention in that old post though has by coincidence been keeping me occupied more recently:

"(any takers for an AVG assembler / disassembler, maybe with GUI shape editing? )."

...
 

guddler

Busting vectors like it's 1982!
vacBacker
Feedback
10 (100%)
Credits
4,055CR
Hi! I think anything that may help people with troubleshooting their DVG's may be useful
smiley1.gif


Your doc was really useful to me back when I started. I remember probably 8 or 9 years ago now we had a meet down at a mates place (Bazfish) and I hacked my Asteroids PCB with some funny text or other down the bottom instead of the copyright message. Turned out to be the subject of much amusement as nobody had seen anyone do anything like that at the time. And there's no way I'd have got there without your document and the other ones linked to in my source code.

Have to say, it's great to see so many people re-surfacing after such a long time. Sadly my memory isn't great and I already can't really remember much of what I was up to at the start of this post (code-wise)!! I'm just hoping I didn't delete all the stuff I was working on when I was clearing up my work laptop to return it two weeks ago.

The BBC Micro has been moth-balled for now as I've got too much else on, so when I saw the whole BeebASM folder I just thought "don't need that on here" and deleted it. I'd completely forgotten about this and am now hoping that it wasn't my only copy
smiley6.gif
 

Displacer

Newbie
Credits
4CR
Ugg, the state machine. Think I'll leave that for some other day. I have a basic understanding of it but the disassembly of the state code would have to be done entirely by hand unless you know of a disassembler for that code.

On a note about the endless loops. They are code checks. One of them in the NMI is used as follows:

Zero page location $5B is incremented in the NMI then it is checked and if it ever goes above 3 the endless loop is executed. This location is halved in the main game loop so as long as the main loop is executing this value will not exceed 3. Now if the game gets stuck somewhere in the code and does not return to the main loop, the NMI will eventually increment this past 3 and lock up the game. So if the main loop has not been executed within 3 passes through the NMI, the next pass will lock up the system. Not sure how often the NMI is executed, I believe it's 60 times per second but I'm not sure yet, but assuming that timing, the game will lock up if the main loop is not executed within every 4/60th of a second.
 

Mitchell Gant

Active member
vacBacker
Feedback
2 (100%)
Credits
884CR
Displacer said:
Not sure how often the NMI is executed, I believe it's 60 times per second but I'm not sure yet, but assuming that timing, the game will lock up if the main loop is not executed within every 4/60th of a second.

From the Asteroids schematics:

"The NMI counter causes an interrupt at the NMI input of the MPU every 4 msec. The interrupt is derived by dividing 3KHz by a factor of 12 through counter C5."

"During Self-Test, the NMI is disabled by ~TEST~"

So it's 250 times per second, except in Self-Test when it's disabled. Wonder why they didn't just use IRQ instead and disable from software when in self test?

Displacer said:
Ugg, the state machine. Think I'll leave that for some other day. I have a basic understanding of it but the disassembly of the state code would have to be done entirely by hand unless you know of a disassembler for that code.

Maybe I do know of a vector assembler/disassembler soon...

smiley2.gif


Vector_AVG_1.jpg
 

Displacer

Newbie
Credits
4CR
Ah so it's 4/250ths of a second. Odd thing about $5B, seems a dual purpose location. I also seems to be a counter for checking the self test switch. Here's the code in the rom:

ROM:680C LDA $2007
ROM:680F BMI loc_680F
ROM:6811 LSR $5B
ROM:6813 BCC loc_680C

So it uses lsr to decrement $5B, but also how many times to check the self test switch.

Corresponding code in NMI:

ROM:7B7B INC $5B
ROM:7B7D LDA $5B
ROM:7B7F CMP #4
ROM:7B81 BCS loc_7B81

All the space saving tricks the code uses makes this a real fun job...

Oooo, that looks pretty sweet! When can I get my grubby hands on it? ;)
 

Alpha1

Do the Shake and 'VAC
Staff member
vacBacker
Feedback
95 (99%)
Credits
5,456CR
Guys. I would just like to say that I have absolutely no idea what you are talking about, but I know for sure that it is awesome.

That is all.
 

trm

Who loves you, and who do you love?
Feedback
2 (100%)
Credits
2,876CR
I'd pretty much forgotten about this thread but am really pleased to see it resurrected. Mitchell - if you need beta testers for your AVG disasm then I'm VERY happy to help as it'll be great use in a project I've got bubbling away as time allows...

I always thought it'd be nice to have some new levels to play in SW/ESB you see ;)
 

grobda

"Look at the size of that thing!"
vacBacker
Feedback
7 (100%)
Credits
1,061CR
Its funny when resurrected threads throw up something you'd been thinking about recently; got a recently acquired BBC B in front of me and an asty dx cab behind me. after finding an 'asteroids emulator' for the atari xl (another 6502 based machine) i was daydreaming about transcoding and playing elite on a vector monitor.

unfortunately it will always be daydream for me as machine code gives me narcolepsy. I have tried!

another cool game i thought would be nice on a asteroids cab is thrust - its got exactly the same controls and theres already a vectrex homebrew version.

anyway enough daydreaming, i need to either get back to Isinor or knock POB off the high score table. These things I have a chance of achieving.
smiley36.gif
 

guddler

Busting vectors like it's 1982!
vacBacker
Feedback
10 (100%)
Credits
4,055CR
golani said:
World cup 90 conversion to pacman numco

hello,

is it possible to get the roms?

i still have it already , but i socket it wrong - and now i have no sound!?
smiley18.gif


i think it is the rom ic 67 or ic 82 on the front pcb.

please let me know

dave

Dude, I'm sorry, but as the OP of this thread, I have to point out it has NOTHING to do with WC90 whatsoever Start a new thread and you never know, you may get lucky. I'd prefer if we kept this one at least on topic to vector game hacking, preferably Asteroids!!
 

chadsarcade

Lord of Vectors (tm)
Feedback
11 (100%)
Credits
443CR
grobda said:
i was daydreaming about transcoding and playing elite on a vector monitor.

I've often thought the same, only via a ZVG as in theory that should be a lot easier. Christian Pinder translated Elite to C code years ago and released it with enhancements as "Elite:The New Kind". The code got pulled shortly after due to (c) reasons but I'm sure some people will have a copy from when it was available. It had a wireframe mode which I always hoped would be easy to translate to the ZVG.

chadsarcade2013-05-21 16:34:55
 

grobda

"Look at the size of that thing!"
vacBacker
Feedback
7 (100%)
Credits
1,061CR
over here; http://stardot.org.uk/forums/viewtopic.php?f=3&t=6537&start=30 people are adding a FPGA to the beebs tube interface. Talk is of an extra 6502 but it could be programmed to run any core within reason.

There is an elite tube version that uses the tube 6502 to handle the graphics.

Elite has been disassembled and rewritten by Angus Duggan to make Elite-A, which also has a Tube 6502 version.

Asteroids has been fully transcribed to FPGA here;

http://www.fpgaarcade.com/ast_main.htm

also one runnning on a CRT here;

http://spritesmods.com/?art=bwidow_fpga&page=2

Seems all the ingredients are there
smiley36.gif
just rewrite the graphics routines to make use of the DVG rather than the tube 6502
smiley17.gif


grobda2013-05-22 10:35:03
 
Top