diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0000.png b/cinema/gba/obj/unaligned-256-linear/baseline_0000.png new file mode 100644 index 000000000..4be2744f7 Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0000.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0001.png b/cinema/gba/obj/unaligned-256-linear/baseline_0001.png new file mode 100644 index 000000000..f658bc32f Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0001.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0002.png b/cinema/gba/obj/unaligned-256-linear/baseline_0002.png new file mode 100644 index 000000000..5f20a6405 Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0002.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0003.png b/cinema/gba/obj/unaligned-256-linear/baseline_0003.png new file mode 100644 index 000000000..04451274a Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0003.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0004.png b/cinema/gba/obj/unaligned-256-linear/baseline_0004.png new file mode 100644 index 000000000..04451274a Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0004.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/baseline_0005.png b/cinema/gba/obj/unaligned-256-linear/baseline_0005.png new file mode 100644 index 000000000..ab9305096 Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/baseline_0005.png differ diff --git a/cinema/gba/obj/unaligned-256-linear/test.mvl b/cinema/gba/obj/unaligned-256-linear/test.mvl new file mode 100644 index 000000000..6256de8fd Binary files /dev/null and b/cinema/gba/obj/unaligned-256-linear/test.mvl differ diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c index 354d8f671..397e84f48 100644 --- a/src/gba/renderers/software-obj.c +++ b/src/gba/renderers/software-obj.c @@ -148,7 +148,8 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re int32_t x = (uint32_t) GBAObjAttributesBGetX(sprite->b) << 23; x >>= 23; uint16_t* vramBase = &renderer->d.vram[BASE_TILE >> 1]; - unsigned charBase = (GBAObjAttributesCGetTile(sprite->c) & ~GBAObjAttributesAGet256Color(sprite->a)) * 0x20; + bool align = GBAObjAttributesAIs256Color(sprite->a) && !GBARegisterDISPCNTIsObjCharacterMapping(renderer->dispcnt); + unsigned charBase = (GBAObjAttributesCGetTile(sprite->c) & ~align) * 0x20; if (GBARegisterDISPCNTGetMode(renderer->dispcnt) >= 3 && GBAObjAttributesCGetTile(sprite->c) < 512) { return 0; }