Tursi Posted December 26, 2023 Author Share Posted December 26, 2023 (edited) I guess I should say what I decided on for paging with GCC. I decided to require 32k and use that as both stack space (lower 8k) and fixed code space (upper 24k). My startup code copies the first three banks to RAM and then jumps to main(), and I learned enough about linker scripts to be able to lay out the memory and segments so that the addressing is correct. Edited December 26, 2023 by Tursi 5 Quote Link to comment Share on other sites More sharing options...
retrodroid Posted December 27, 2023 Share Posted December 27, 2023 (edited) Playing this on my arcade setup (MiSTer) is amazing. This thing would have *killed* and been a total system seller in the 1980's! It appears you're using the bitmap graphics mode, which is I guess why you require the 32KB memory expansion? EDIT> I just realized I left the cabinet on all night so the good news is that there are no apparent memory leaks in Mario Bros., still running fine after about 20 hours. Edited December 27, 2023 by retrodroid Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted December 27, 2023 Share Posted December 27, 2023 23 hours ago, hloberg said: @Tursi do you have a program that translates Coleco to TI99 or do you convert by hand (or maybe a little of both)? It's written in C.. so he ported it to the GCC tms9900 C compiler 1 Quote Link to comment Share on other sites More sharing options...
+dhe Posted December 27, 2023 Share Posted December 27, 2023 What's the correct line to add this as a user cart in Classic99? Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted December 27, 2023 Share Posted December 27, 2023 4 hours ago, dhe said: What's the correct line to add this as a user cart in Classic99? [usercart4] name="Mario Bros" rom0=8|0000|10000|L:\ti994a\eproms\All Cart Files\mario8.bin (obviously use your own pathing) (fixed) 1 Quote Link to comment Share on other sites More sharing options...
+hloberg Posted December 27, 2023 Share Posted December 27, 2023 2 hours ago, arcadeshopper said: It's written in C.. so he ported it to the GCC tms9900 C compiler So is this a rewrite of Mario in C by the ColecoVision people? Quote Link to comment Share on other sites More sharing options...
Tursi Posted December 27, 2023 Author Share Posted December 27, 2023 4 hours ago, retrodroid said: It appears you're using the bitmap graphics mode, which is I guess why you require the 32KB memory expansion? No, I need it because 256 bytes is not enough to run the code. Since it's using the C compiler, it expects to have CPU memory to store the stack and the variables in. Making it work over VDP is technically possible, but not a task I'm willing to undertake. 2 hours ago, hloberg said: So is this a rewrite of Mario in C by the ColecoVision people? No, I wrote the Coleco version too, just like I wrote and later ported the Coleco version of Mr Chin. It's not a 'back in the day' program. But you can read the history over in the Coleco forums, I don't want to call too much new attention to it. 4 Quote Link to comment Share on other sites More sharing options...
Tursi Posted December 27, 2023 Author Share Posted December 27, 2023 3 hours ago, arcadeshopper said: [usercart4] name="Mario Bros" rom0=8|0000|FA00|L:\ti994a\eproms\All Cart Files\mario8.bin (obviously use your own pathing) It should be: rom0=8|0000|10000|L:\ti994a\eproms\All Cart Files\mario8.bin The second value is the length of the ROM in hex (here, a 1 and 4 zeroes) - your version will truncate the end of it. The Classic99 debug log will complain about this. If you don't care to figure it out, any cartridge with the correct filename extension can be autoconfigured with: rom0=*|0|0|L:\ti994a\eproms\mario8.bin The '*' means autodetect, so load address and size can both be 0, and of course the path as applies to your system. To test whether a ROM will work that way, just drag and drop it over the window. If it works correctly, this line uses the same load mechanism. 1 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted December 27, 2023 Author Share Posted December 27, 2023 After watching John Hancock's video, I've made a small update here. This fixes the odd bonus stage behaviour that we see in the video. (I think... I could only reproduce it by moving just like he does ). There was definitely a timer display issue caused by my passing the wrong data type to that function, but the rest was some weirdness with chars again... this one I didn't dig into as it was so complicated to just reproduce, let alone dig into. I converted the values that didn't need to be chars back to ints and it seems to count correctly now. I've added an 'E' to the filename and on the title page to be clear it's the update. The bug only affects the TI port. I can't edit the main post, can a mod update it for me? MarioBrosTI_E.zip 8 10 Quote Link to comment Share on other sites More sharing options...
retrodroid Posted December 27, 2023 Share Posted December 27, 2023 11 minutes ago, Tursi said: No, I need it because 256 bytes is not enough to run the code. Since it's using the C compiler, it expects to have CPU memory to store the stack and the variables in. Making it work over VDP is technically possible, but not a task I'm willing to undertake. Not a complete sadist I see. lol. 11 minutes ago, Tursi said: No, I wrote the Coleco version too, just like I wrote and later ported the Coleco version of Mr Chin. It's not a 'back in the day' program. But you can read the history over in the Coleco forums, I don't want to call too much new attention to it. Interest piqued, heading over now... Quote Link to comment Share on other sites More sharing options...
RickR Posted December 28, 2023 Share Posted December 28, 2023 Thank you so much! What an awesome port. Quote Link to comment Share on other sites More sharing options...
Big Gangster Posted December 29, 2023 Share Posted December 29, 2023 Wow, I can play Mario Bros. on the Ti-99/4A. Purely Amazing! 2 Quote Link to comment Share on other sites More sharing options...
+Smoker Ace Posted December 30, 2023 Share Posted December 30, 2023 Thank you @Tursi 🤩 This isn't a great score but I'll get better... Thank you agein 1 Quote Link to comment Share on other sites More sharing options...
Sergioz82 Posted December 31, 2023 Share Posted December 31, 2023 Wow great port! As others said, this would have been a hit in the 80s 1 Quote Link to comment Share on other sites More sharing options...
dphirschler Posted January 4 Share Posted January 4 For those playing on DS99, map START and SELECT to 1 and 5. Makes it a whole lot nicer to play. Darryl 8 Quote Link to comment Share on other sites More sharing options...
globeron Posted January 6 Share Posted January 6 I have to practice to get at this level as in the Colecovision video. On the TI-99/4A at Phase 16 the level looks different (Donkey Kong style, I like it!) 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted January 6 Author Share Posted January 6 11 hours ago, globeron said: I have to practice to get at this level as in the Colecovision video. On the TI-99/4A at Phase 16 the level looks different (Donkey Kong style, I like it!) That's an easter egg that you only get if you clear the bonus stage before it. You'll get points for jumping over the barrels, but that speeds them up. 2 Quote Link to comment Share on other sites More sharing options...
globeron Posted January 7 Share Posted January 7 Yesterday I played with my kid to test two player mode. Which is also fun as you can push each other Luigi or Mario over the edge. It is also more difficult as sometimes you hit each other or attackers at the same time (means they come alive again). Quote Link to comment Share on other sites More sharing options...
Tursi Posted January 7 Author Share Posted January 7 3 hours ago, globeron said: Yesterday I played with my kid to test two player mode. Which is also fun as you can push each other Luigi or Mario over the edge. It is also more difficult as sometimes you hit each other or attackers at the same time (means they come alive again). There's also one more fireball on the higher stages - I gave Mario and Luigi each their own horizontal fireball 1 Quote Link to comment Share on other sites More sharing options...
globeron Posted January 7 Share Posted January 7 2 hours ago, Tursi said: There's also one more fireball on the higher stages - I gave Mario and Luigi each their own horizontal fireball We have seen it, the green fireballs coming from each side. It is challenging and an addictive game! Quote Link to comment Share on other sites More sharing options...
globeron Posted January 15 Share Posted January 15 Hi, I think I found a small bug: (tested in Retrobat/MAME64, JS99er.net and Classic99) Rev. E. For Retrobat I was doing Pad2Key mapping (Joystick to key mapping). To jump for player 1 use Q and to jump for player 2 use Y. but when pressing either Q or Y on the keyboard both players jump at the same time! (I double checked with other two player games (where two players play concurrently, we do not have so many on the TI): Blasto, Barrage, Meteor Attack, Tennis - they do not have this behavior in the emulators). Quote Link to comment Share on other sites More sharing options...
Tursi Posted January 15 Author Share Posted January 15 Yeah the keyboard interface only supports 1 player. It's a quick hack overlay on the Colecovision controller read functions, so I never intended to support it beyond that. Unfortunately this code was written long before my existing libraries and it's a bit difficult to hack it up. I tried adapting it to the new library and new compiler, but that's a bigger task than I expected. Does Retrobat not support joysticks? Quote Link to comment Share on other sites More sharing options...
globeron Posted January 15 Share Posted January 15 Retrobat libretro/Mame supports joysticks/controller and it works for 2 players, but I am doing key mapping to the controller buttons like 5 for coins an 1 and 2 so that I do not have to touch the keyboard when playing but need to map fire and arrows in this case as well not too worry. All good with the game! Quote Link to comment Share on other sites More sharing options...
Tursi Posted January 17 Author Share Posted January 17 Ah, sorry about that. The problem was I accidentally blew away my old compiler during tests of the new one, and building with the new one wasn't fitting in the 8k banks Mario Bros uses, so rebuilding the code had become non-trivial. I decided to take another look at it, which ended up being helpful since I found my new libs pulling in lots of dependent code that I didn't need. It fit nicely when I fixed that, and so I went ahead and rewrote the keyboard interface. Q and Y will now work as joystick buttons in joystick mode. In keyboard mode, full 2 player is possible (Luigi uses J and K to move and Y or P to jump, Mario still uses S and D to move, and Q or Space to jump). There's no split key/joy mode. Last version though, barring any new bugs from the upgrade (I didn't play too far)! MarioBrosTI_F.zip 5 3 Quote Link to comment Share on other sites More sharing options...
Tursi Posted January 17 Author Share Posted January 17 Sorry, filename should be MarioF8.bin to work with Classic99. MarioBrosTI_F.zip Same file, just renamed. 7 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.