so I went and beat the game while having a breakpoint on a function that tells me conversation IDs:
1: Emer Kane
2: Titus scientist
3. Gimlak
4: Titus (planet)
5: Jelina (planet)
6: Death robots
7: Government
8: Modian
9: Devon Manta
10: Kima
11: Rigelian Supply Depot
12: Titus robot
13: Titus hyperdrive ship
14: Zookeeper alien
15: Rigelian with stolen face
16: Galaen (planet)
So... something is missing!
EDIT: Found 'em
why write
bool is_joystick_button_down(int button)
when you can instead write two nigh identical functions:
bool is_joystick_button_1_down()
bool is_joystick_button_2_down()
?
I know programmers who don't use copy paste and they're all cowards
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...