Jump to content

Munch Man source as text


Recommended Posts

I've been working on a Munch Man port to Atari 8-bit, which has quite a few architectural challenges. But in the process I've studied the Munch Man source code very closely, and in the process produced a text version that can be assembled. I'm imagining that there is a version of this out in the world, but I must admit I didn't find it, so I OCRed the PDF file, converted the reference addressing to something that works with Editor/Assembler, and corrected the various errors that the OCR process introduced. The file attached will assemble with xas99 and with Editor/Assembler itself (with appropriate file splitting and register definitions).


With regards to Munch Man itself, it is in my mind emblematic of the TI-99/4A, which was my introduction to personal computing. In so many respects I prefer it over the original Pac-Man, just as I prefer TI Invaders over Space Invaders.


Anyhow, it has been a lot of fun to immerse myself in TMS9900 Assembly Language. Compared to 6502, it is like driving a luxury car instead of a scooter! And the TI architecture in my opinion is fantastic, after years of hearing it almost universally maligned. I could definitely get much deeper into it, and it has certainly got my mind turned to many possible game designs.


Please feel free to proofread and correct the attached source code, or even better, provide a definitive version in the TI-99/4A developer resources.


-- David


  • Like 18
  • Thanks 2
Link to comment
Share on other sites

More thanks!


First, I find it humbling to see (again) the complexity of the source underlying a game like MM. Mind-boggling. Puts my teeny efforts into stark perspective. 


Second, the executable loads into 16-bit ram on my modified console. I'd say it runs close to twice as fast, almost unplayable at the first level! To return to return to cartridge RAM (on the FinalGrom) is to step into a vat of molasses. I'll get a video up in the next day or so.  



Edited by Reciprocating Bill
  • Like 4
Link to comment
Share on other sites

@Reciprocating Bill That's very interesting. The timing during the game is definitely different from what I'm seeing, so that is purely down to the faster bus? I did check the delay timers and they all look correct, and they are supposed to be locked to the frame counter so I'm surprised the speed-up on the intervening code is so dramatic.


One of the small differences I've noticed with the disk source version is the speed of the chain that runs around "PRESS ANY KEY..." I'm going to take a look into why that is the case, though small differences do exist: note the parentheses around the PRESS ANY KEY message during the demo game. 

Link to comment
Share on other sites

I hadn't noticed the parentheses. The actual cartridge also lacks the parentheses. I assume that the FinalGROM version was derived from the cartridge. So the version you've assembled is at least slightly different from the final product. 


That said, the evident speed increase is probably attributable to the 16-bit RAM and the removal of the wait states imposed by the multiplexer. 


At some point I'll run the disk version on a stock console I have in storage.  That might take a day or so.

Edited by Reciprocating Bill
Link to comment
Share on other sites

One other thing to consider here: IIRC, the source listing is based on the disk version of the program, not the cartridge version, so there might be some minor differences there. The disk version is not at all common in the wild, although I do believe it is up on WHT. TI Invaders was also released in both formats.

Link to comment
Share on other sites

Thanks @HOME AUTOMATION and let me ask a simple question - what are the recommended tools to look into the .tidisk files contained in the zip files? I know I should know this but I don't. I quickly tried with with classic99 and xdm99.py but they don't work immediately. I am looking for software running on Windows, Linux or macOS (the latter my preferred host OS). Thank you!

  • Like 1
Link to comment
Share on other sites

Some results from my analysis of the source code: the initial mapping of character data in the Pattern Descriptor Table before opening the title screen. This is basically the layout of patterns loaded into VDP memory between lines 987 and 1126. Included are the colors specified in the "PCT", or color table, in lines 1141 to 1177.


Note that there appears to be a bug at line 1065. "INIT DOT CHARACTERS" has a length of 204 bytes (as confirmed in the PDF) but 13 characters is 104 bytes. This corrected value is represented in the analysis, though leaving it in the source code does not affect the assembled binary.


  • Like 3
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.

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.

  • Recently Browsing   0 members

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