the only difference between the code is if it ANDs the result against 0x10 (button 1) or 0x20 (button 2).
years ago I asked for the source for this game in the hopes of building a modernized version. I think I'm starting to see why I never got the source: it's slightly crap
this code does the following:
sets joy_left to false
sets joy_right to false
reads the state of the joystick
if this fails, it sets joy_left to false, joy_right to false, then returns.
YOU DID THAT TWICE. IT'S ALWAYS FALSE
this is in the function read_joystick_analog_x, which is the same as read_joystick_analog_y with one byte changed
it keeps track of how many enemies/planets are on screen by adding 2 to a global variable in the render_enemies_and_missiles function.
but why two? suspicious.
on 16-bit system, 2 is a very suspicious number
yep there's an array of pointers!
this file loading code is broken. it tries to load the file in 64kb chunks but it only saves the size as a 16bit variable, so a 64kb file will be recorded as 0, and any bigger file will break.
but fortunately the file is only 11kb so it works, as the read-second-chunk behavior never triggers
at least this is a compression algorithm that isn't too complicated: it's simple RLE.
0xFF is a marker, and is followed by a byte of repeat count(-1) and a byte of value.
although technically this is the second time I hacked this compression, I did figure this out already back in, like, 2013?
this game uses a ton of hardcoded offsets into data files. I wonder if this was done with linker nonsense or if they had to be manually hardcoded in.
the latter is frighteningly possible
@foone@digipres.club that's good, I guess...