MSXgl – A new C game library for MSX

Page 14/16
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15 | 16

By aoineko

Champion (448)

aoineko's picture

15-04-2022, 23:59

Hi,
I haven't yet found a clue about the crash of the AKG replayer of Arkos Tracker 2. The strange thing is that the music crashes at some point on some emulators (OpenMSX and BlueMSX) but not on others (Emulicious and WebMSX). I guess it's a hardware limitation that is not well emulated on the lastest, but I don't see the link with a music player. Is there any writing limitation on PSG? But even if there is, I can understand that the sound is incorrect, but not that it crashes.
If someone has a clue, I'm interested.

---- EDIT ----
Few details:
- Some music works on all machines (like the 1st one in the sample program).
- A music which crashes (hang/reboot) always does so at the same time in its own playback.
- On OpenMSX, there is no crash with the C-BIOS MSX2 machine (both 50 or 60 Hz) but crash with C-BIOS MSX1.
This does not help me much to understand... ^^

By raymond

Hero (601)

raymond's picture

16-04-2022, 07:12

aoineko wrote:

Hi,
I haven't yet found a clue about the crash of the AKG replayer of Arkos Tracker 2. The strange thing is that the music crashes at some point on some emulators (OpenMSX and BlueMSX) but not on others (Emulicious and WebMSX). I guess it's a hardware limitation that is not well emulated on the lastest, but I don't see the link with a music player. Is there any writing limitation on PSG? But even if there is, I can understand that the sound is incorrect, but not that it crashes.
If someone has a clue, I'm interested.

Did you also test it on a real MSX? What happens then?

By ARTRAG

Enlighted (6845)

ARTRAG's picture

16-04-2022, 13:03

A timing issue maybe?
The timing could affect the isr execution

By aoineko

Champion (448)

aoineko's picture

17-04-2022, 20:08

raymond wrote:

Did you also test it on a real MSX? What happens then?

I tested on my Phillips NMS 8250 (the only hardware I own) and the result is strange: On the 4 tunes of the sample program, 3 work without problem (I tried several times and in different orders) and one ends up crashing after a while (always at the same time).
On OpenMSX with the same machine, 1 works without problems and the other 3 crash at a given time.

ARTRAG wrote:

A timing issue maybe?
The timing could affect the isr execution

What kind of issue?
The update of the AKG player takes place after the v-blank synchronization and lasts only a few scanlines.
Normally, there is no reason why the update should still be in progress when the next VDP interrupt occured.
And even if that were the case, what could create a problem?
In this sample, I don't touch page 0's slot at all and leave the BIOS default ISR.

EDIT: If someone can test, here is the ROM (https://github.com/aoineko-fr/MSXgl/raw/main/projects/sample...). Use [bottom] button to switch to AKG player and select the 3rd music with [right] (this one crash in most machine). 1st music don't crash in all my tests.

By Manuel

Ascended (18794)

Manuel's picture

17-04-2022, 20:51

If you can reproduce it in openMSX then you should be able to trace back the cause of the crash with the debugger.

By aoineko

Champion (448)

aoineko's picture

17-04-2022, 21:57

I never found a way to use SDCC symbols in OpenMSX debugger. :-/

My assembler level is to low to debug without symbols.

By Manuel

Ascended (18794)

Manuel's picture

18-04-2022, 09:24

Send me a symbol file and I will take a look.

By geijoenr

Champion (311)

geijoenr's picture

18-04-2022, 09:36

aoineko wrote:

I never found a way to use SDCC symbols in OpenMSX debugger. :-/

My assembler level is to low to debug without symbols.

you can try something like this to convert the map file from sdcc to openMSX debugger symbols:

import string
import sys

def is_hex(s):
	try:
		int(s, 16)
		return True
	except ValueError:
		return False

f1 = open(sys.argv[1] + '_.sym','w')

with open(sys.argv[1] + '.map','r') as f2:
	for line in f2:
		line1 = line.strip()
		words = line1.split()
		if len(words) > 1:
			if is_hex(words[0]):
				f1.write(words[1] + ': equ ' + words[0] + "H\n")

f2.close()
f1.close()
exit()

By aoineko

Champion (448)

aoineko's picture

18-04-2022, 09:55

It works well. Many thanks Geijoenr.
I'll add it to MSXgl Build Tool.

For my Arkos Tracker player crash, I have an other problem with OpenMSX debugger: the call stack viewer don't work... it show 0000h address and not the SP one.
I tried to look at SP address in the memory viewer, but it's really difficult to track the calls with this view...

By gdx

Enlighted (5510)

gdx's picture

18-04-2022, 14:20

aoineko wrote:

I never found a way to use SDCC symbols in OpenMSX debugger.

SDCC uses a Z80 syntax quite exotic. It's a shame you learn assembler with that but it's not hard to convert with a text editor.

Page 14/16
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15 | 16