Email or username:

Password:

Forgot your password?
Top-level
Foone🏳️‍⚧️

can I not set an I/O breakpoint in dosbox-x's debugger? I forget.

5 comments
Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

oh sweet laser jesus I found the upload palette function and THEY UNROLLED IT

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

why do:

for(int i=0;i<256;i++){
upload_color(i,palette[i]);
}

when you can do

upload_color(0,palette[0]);
upload_color(1,palette[1]);
upload_color(2,palette[2]);
upload_color(3,palette[3]);
upload_color(4,palette[4]);
upload_color(5,palette[5]);

and just repeat 251 more times

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

the worst part is that this was done with a compiler from 1991 so there's no way it unrolled the loop itself. they did this manually

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

oh that's cute. their set_palette function takes two arguments: a pointer to the palette, and a number of extra palettes to apply.

so they could set up an array of palettes in decreasing brightness, and just do set_palette(&fade_pallets[0], 64) to go through them.

but the same function is a regular one-time set_palette if you just pass 1 for the second argument.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

"hey ghidra what calls set_palette?"

"I don't know! you're in 16bit segmented mode! pointers are MEANINGLESS

Go Up