Jump to content
IGNORED

Mario Bros.


Tursi

Recommended Posts

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 by Tursi
  • Like 5
Link to comment
Share on other sites

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 by retrodroid
Link to comment
Share on other sites

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.

 

  • Like 4
Link to comment
Share on other sites

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.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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

  • Like 8
  • Thanks 10
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

  • Like 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 ;)

 

  • Like 1
Link to comment
Share on other sites

 

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

 

 

 

 

 

 

 

Link to comment
Share on other sites

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?

 

 

 

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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

  • Like 5
  • Thanks 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.

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