tandy put their sound chip on the 1A interrupt?
-
replied to Foone🏳️⚧️ last edited by
so like, midisnd.dat will have 12 entries, and the first 11 are 200-500 bytes each, and then the last is 3k.
presumably it's each song and then some config info? -
replied to Foone🏳️⚧️ last edited by
cities.dat is very interesting. There's 30 cities in total, but 491 entries in it!
So they must be doing something odd there, that doesn't divide equally. Maybe one city-chunk gives IDs of the others?
-
replied to Foone🏳️⚧️ last edited by
idea for a test: it's easy to spot which chunk in a city is the image, because it's the biggest. Here's a way to determine if it's looking up by IDs or offsets/indices: swap the IDs of two images
-
replied to Foone🏳️⚧️ last edited by
darn. turns out you can't just renumber the chunks, because they have to be in increasing order.
so maybe I just need to leave the chunk indexes as is, and instead of moving the entries around, I move where they're pointing?
-
replied to Foone🏳️⚧️ last edited by
Bingo! I'm in Athens, but I'm seeing the image for Baghdad, and apparently with the Baghdad palette?
So one of these other chunks must be the palette for a city. Or it selects from a selection of palettes? Maybe they've just got a couple defined.
-
replied to Foone🏳️⚧️ last edited by
okay I figured out the cities.dat IDs:
They're all 1XXYY (in decimal):
XX is the city number (0-29), YY is the sub-chunk-id.So like:
YY=0: City name
YY=2: City image.They go between 00 and 22, and not all numbers need to be present.
-
replied to Foone🏳️⚧️ last edited by
hmm, reading a buffer and then summing all the values of the bytes in it.
suspicious behavior.
-
replied to Foone🏳️⚧️ last edited by
okay I think it has a very simple 1-byte CRC check on the chunks, which are optionally not run.
I can't make the math work but I'm reasonably sure that's what it is -
replied to Foone🏳️⚧️ last edited by
@foone Not with that attitude. If a GBA can do threading and DOS can run JavaScript, surely you can do threading in DOS.
-
replied to Kawaoneechan last edited by
@kawa YEAH BUT YOU SHOULDN'T
-
replied to Foone🏳️⚧️ last edited by
@foone SEE? ATTITUDE PROBLEM!
-
replied to Kawaoneechan last edited by
@kawa I'LL PROBLEM YOUR ATTITUDE
-
replied to Foone🏳️⚧️ last edited by
okay they're using a blit that's UI-aware, so it starts the coordinate system at (1,13). Fun!
-
replied to Foone🏳️⚧️ last edited by
looking into the blitting code I managed to steal the world map out of RAM
-
replied to Foone🏳️⚧️ last edited by
ugh. TODO for my eventual Good DOS Debugger:
Instant Video display.
I don't know exactly how DOSBox-X is doing it, but while single-stepping the debugger, the display never updates. I can dump the ram at A000:0000 and see what updated, but not on the screen in DOSBox -
replied to Foone🏳️⚧️ last edited by
@foone someone alert CIAA (the Cartographers Industry Association of America)
-
replied to Foone🏳️⚧️ last edited by
@foone Perhaps it only updates an internal SDL canvas, but never throws it on the actual screen.
-
replied to Foone🏳️⚧️ last edited by
found a suspicious array, which goes:
[
(-1,0),
(-1,1),
(0,1),
(1,1),
(1,0),
(1,-1),
(0, -1),
(-1,-1),
(0,0)
]POP QUIZ: why does the font renderer need this array? how are they being "lazy" with this array?
-
replied to Foone🏳️⚧️ last edited by
there's also this code in the for-loop that steps through this array:
if index==8:
color=white
else:
color=black -
replied to Riley S. Faelan last edited by
@riley could be. I may have to see if I can hack it so that stepping the debugger tails the main window to update somehow