supermario world for msx

Page 103/109
96 | 97 | 98 | 99 | 100 | 101 | 102 | | 104 | 105 | 106 | 107 | 108

By hit9918

Prophet (2825)

hit9918's picture

15-12-2014, 19:05

when the stack does overrun then you notice it immedeately.
without the check, your bugsearching might make you search in other places of the code and endless time find nothing.

By hit9918

Prophet (2825)

hit9918's picture

15-12-2014, 19:20

"inc sp inc sp ei ret", you put that into fd9a hook?
it is "get unknown word from code who called me and jump to random location".

By Daemos

Paragon (1669)

Daemos's picture

15-12-2014, 19:28

thats how the code ends. Offcourse I first nicely pop the bytes back then return works like a charm.

By tonigalvez

Champion (280)

tonigalvez's picture

15-12-2014, 19:40

Daemos, I write to you a mail. Please read it Smile

By Grauw

Enlighted (7840)

Grauw's picture

15-12-2014, 20:29

Tip: at the start of your program, check the SP address to confirm your data + stack can fit (with a safe margin). If not, di/halt immediately rather than letting the program fail in mysterious ways later. These type of assertions, I use them a lot in Synthesix to improve reliability and reduce “mystery bugs”.

btw, Synthesix also crashed on the HB-500P because the Disk ROM booted before it (different cause though). I fixed the issue and now it works fine. :)

hit9918 wrote:

if you want to use stuff at F380, first DI and knock down fd9a fd9f with a C9.

Ew ew ew... Disk drive won’t stop spinning then...

Daemos wrote:

I have uhm... relocated the work area for the FMplayer into the work area for MSX basic. That adress $F664 up to somewhere near $F800 Since we don't use basic we do not require that area so we use it for our own stuff.

There’s 384 bytes reserved for the three PLAY buffers, starting at address F975H (VOICAQ), which is often repurposed for program storage.

By sd_snatcher

Prophet (2914)

sd_snatcher's picture

15-12-2014, 21:04

A lot of things are blamed on the HB-F500P, but in fact it's just the easiest all-in one machine to test for an unusual layout.
Similar bugs will occur on many other machines depending on the cartridges connected to the slots, and the order that they're connected. That's why I mentioned an FS-A1 with an external disk interface.

Developers should be thankful that they can use the HB-F500P to test a lot of problems in a single shot. Otherwise they would have to test a lot of combinations to achieve the same effect. The HB-F500P was the original inspiration for the AcidTests.

IOW, excluding the HB-F500P would not just exclude this machine: in fact, it exclude a lot combinations and hinder future expansion of the system (i.e.: WiFi card with built-in InterNestor UNAPI? Forget it!).

Now imagine the manual of such game, having to contain some lengthy explanation of the hardware where it wouldn't work, like:

"This game doesn't run on the following machines, extensions or hardware combinations:

- Sony HB-F500P
- Victor HC-90 (all variants)
- Victor HC-95 (all variants)
- Daewoo CPC-300
- Any MSX1 with T7937 MSX-Engine upgraded to MSX2 internally
- Casio PV-7 (for MSX1 games)
- Casio MX-10 (for MSX1 games)
- Casio MX-101 (for MSX1 games)
- Yamaha CX5M (for MSX1 games)
- Yamaha YIS-503F (for MSX1 games)

Extensions (remove them before running the game):
- Any external disk interface connected to slot-1. Be sure that your disk interface is connected to a slot with a number higher than the game, or disconnect the disk interface completely.
- Hard disk interfaces (IDE, SCSI, etc)
- Flash card interfaces (SD, CF, etc)
- NEOS MA-20
- External 16KB to 64KB RAM cartridge expansions, like the Casio OR-208, OR-216 and OR-264.
- Padial PC Keyboard Interface
- DenyoNet network interface
- MSX-Audio BIOS (no sound will be heard)

Extra Notes:
- Some machines may require you to press CTRL on boot, to free up enough stack space for the game to run. This is the case if more than one disk interface is present"

Maybe it would be sincere and just state:

"This game just run on plain vanilla MSX models made in the 80's, with RAM on slot 1 to 3, without any extensions connected". ;)

By hit9918

Prophet (2825)

hit9918's picture

15-12-2014, 21:06

I forgot the details and which konami I been looking at.
As far as I can see nemesis doesnt clear the fd9f LED hook and the F500 doesnt put its LED on.
On 75P with hbd50 in slot 1, LED is off too.

Keeping FD9F takes inaceptable cpu time.
In diskloader style, one deactivates bios interrupts and reactivates whenever going on the disk.
I would code ROMs in more diskloader style just for option of savestates.
And generaly get as much convergence to diskloader as possible.

Except that then silly firmwares may pop up before the game.
Even worse when exiting them makes a difference to a usual MSX boot.
Because "launch after diskROM" requires hooks poker.

By sd_snatcher

Prophet (2914)

sd_snatcher's picture

15-12-2014, 21:33

Just one addendum: Daemos, as I said to Oscar (Kai Magazine) on the other thread, it's your project and your hobby. Do it the way you feel you want. Smile

It's my personal preference to code according to the guidelines, but it's just mine. I have my reasons to do it based on some principles I value. It's not something to be enforced, but a philosophy that each one can decide to adopt or not. Those are the principles I have in mind when I code:

1) There's only one reason for a middle aged man to play games on a 30 year old machine that lasted for less than a decade: passion.
2) Within this passion, there's always a special place for the first machine the guy had. This is his 1st passion. He probably has a special place for such machine at home
3) I don't want to say: I'll not support the 1st machine you had. Use another machine, or an emulator
4) Coding for the MSX is passion too. I may play on a PC, but nothing compares to the real thing. If I'll take shortcuts that will force too many people to play on PCs, then it would be much easier/quicker to just code MSX-flavored PC games like Life Fortress Volcabamba and La Mulana. Great games, but you must run them on PC hardware. ROMs that force the user to use a PC instead of his beloved machine as just like them.

PS: I don't mean to be offensive in any way.

By Daemos

Paragon (1669)

Daemos's picture

15-12-2014, 22:39


PS: I don't mean to be offensive in any way.

hey trust me you are not. I read comments positive unless stated otherwise Smile

I follow your coding guidelines more or less and I totally agree with you. Sometimes I just whine alot and cry around because it actually helps my thinking process alot. When I somehow tend to give up I go to bed angry and wake up in the morning with a solution. I need people to talk to in order to think and sometimes I need to trow my frustration into some public place knowing as soon as people talk back a little the brilliant ideas pop up.

Offcourse in the end the entire engine will work on any machine in any config. In fact It should and according to my test it does work in slotexpanders and all kind of hardware. It works perfectly on the sony by now and deals very well with the RAM expansions. Yes I agree, I have not coded it the way it should but perhaps I found a new way. Who can tell.

Always remember no matter what you do or say it is helpfull unless it is rude. I do take all of you guys advices into account and whenever I get the chance apply them. Without the very helpfull tips the engine would have never been this stable by now Smile

By Manuel

Ascended (15105)

Manuel's picture

15-12-2014, 23:23

Just one think: try the way it 'should' be done first and if it doesn't work, just remember that it 'should' work, so you probably made a mistake. Such paved ways are usually causing less surprise bugs than 'newly invented' things. Remember that this is ancient hardware, so the best methods are usually already found years ago. But you never know, I'm just stating this in general of course. Using this 'policy' may save you a lot of extra unnecessary work.

Of course, as usual, in the end, it's entirely your own decision! Just make sure you keep having fun! Smile

Page 103/109
96 | 97 | 98 | 99 | 100 | 101 | 102 | | 104 | 105 | 106 | 107 | 108
My MSX profile