ks_nes_draw: ksNesDrawMakeBGIndTex 99%

This commit is contained in:
Cuyler36
2025-10-24 00:47:13 -04:00
parent 12e785be8e
commit 78a8115758
+13 -12
View File
@@ -104,15 +104,15 @@ void ksNesDrawMakeBGIndTex(ksNesCommonWorkObj* wp, u32 mapper4) {
for (row = 8; row < 236; row++) {
u32 scanline_ctrl0 = wp->work_priv._0B40[row]._1C;
u32 scanline_ctrl1 = wp->work_priv._0B40[row]._1B;
u8* patternPtrBase = (u8*)&wp->work_priv._0B40[row]._10;
u8* nametable_p;
u8 tile_byte;
u32 palette_bits;
u32 nibble_acc; // @bug - uninitialized
u32 dst_idx;
u32 mask;
u32 nibble_acc; // @bug - uninitialized
u8* patternPtrBase = (u8*)&wp->work_priv._0B40[row]._10;
u32 tile_byte;
u32 palette_bits;
u32 dst_idx;
u8* nametable_p;
mask = (scanline_ctrl0 & 0x04) ? CHR_flag_xor : 0;
mask = mask = (scanline_ctrl0 & 0x04) ? CHR_flag_xor : 0; // bruh
for (col = 0; col < 34; col++) {
if (col == trigger_col) {
@@ -120,19 +120,20 @@ void ksNesDrawMakeBGIndTex(ksNesCommonWorkObj* wp, u32 mapper4) {
}
// _00 and _04 are pointers to ppu_nametable_pointers[0/1]?
nametable_p = (&wp->work_priv._0B40[row]._00)[((scanline_ctrl1 >> 7) & 1) * 2];
nametable_p = (&wp->work_priv._0B40[row]._00)[((scanline_ctrl1 >> 8) & 1)];
if (((s32)nametable_p) >= 0) {
nibble_acc = (((u32)nametable_p) & 3) | (nibble_acc << 4);
tile_byte = (((u32)nametable_p) >> 8) & 0xFF;
} else {
nibble_acc = ((nametable_p[0x3C0 + ((scanline_ctrl0 & 0xE0) >> 2) + ((scanline_ctrl1 & 0xE0) >> 5)] >> (((scanline_ctrl0 & 0x10) >> 2) | ((scanline_ctrl1 & 0x10) >> 3))) & 3) | (nibble_acc << 4);
nibble_acc = ((nametable_p[0x3C0 + ((scanline_ctrl0 & 0xE0) >> 2) + ((scanline_ctrl1 & 0xE0) >> 5)] >> ((((scanline_ctrl1 & 0x10) >> 3) | (scanline_ctrl0 & 0x10) >> 2))) & 3) | (nibble_acc << 4);
tile_byte = nametable_p[((scanline_ctrl0 & 0xF8) << 2) + ((scanline_ctrl1 & 0xF8) >> 3)];
}
palette_bits = patternPtrBase[(tile_byte >> 6) | ((wp->work_priv._0B40[row]._18 & 0x10) >> 2)];
palette_bits = patternPtrBase[((u8)tile_byte >> 6) | ((wp->work_priv._0B40[row]._18 & 0x10) >> 2)];
wp->work_priv._3240[(((row & 3) * 8) + ((row >> 2) * 288) + ((col & 3) * 2) + ((col & 0x3C) * 8)) + 0] = (((palette_bits & 1) << 6) | (tile_byte & 0x3F)) - (col & 1);
wp->work_priv._3240[(((row & 3) * 8) + ((row >> 2) * 288) + ((col & 3) * 2) + ((col & 0x3C) * 8)) + 1] = (palette_bits >> 1) ^ mask;
// issue is here
wp->work_priv._3240[(((col & 0x3C) * 8) + ((col & 3) * 2) + ((row >> 2) * 288) + ((row & 3) * 8)) + 0] = (((palette_bits & 1) << 6) | (tile_byte & 0x3F)) - (col & 1);
wp->work_priv._3240[(((col & 0x3C) * 8) + ((col & 3) * 2) + ((row >> 2) * 288) + ((row & 3) * 8)) + 1] = (palette_bits >> 1) ^ mask;
if ((col & 1) != 0) {
wp->work_priv._7840[((col >> 1) & 3) + (col & 0x38) * 4 + ((row & 7) * 4 + (row >> 3) * 160)] = nibble_acc;