Fix affine world width assignment logic
This commit is contained in:
+5
-4
@@ -320,6 +320,7 @@ static void vipWriteWorld(VB *sim, uint32_t offset, int type, int32_t value) {
|
||||
uint32_t base; /* Base BG map index */
|
||||
uint8_t *bg; /* Background template */
|
||||
uint32_t count; /* Number of BG maps in background */
|
||||
int32_t width; /* Computed affine width */
|
||||
World *world; /* World state */
|
||||
uint32_t z; /* Iterator */
|
||||
|
||||
@@ -381,10 +382,10 @@ static void vipWriteWorld(VB *sim, uint32_t offset, int type, int32_t value) {
|
||||
case 5: world->mp = SignExtend(value, 15); break;
|
||||
case 6: world->my = SignExtend(value, 13); break;
|
||||
case 7: /* W */
|
||||
value = SignExtend(value, 13) + 1;
|
||||
world->wNaffine = value < 0 ? 0 : value;
|
||||
value = SignExtend(value, 10) + 1;
|
||||
world->wAffine = value < 0 ? 0 : value;
|
||||
width = SignExtend(value, 13) + 1;
|
||||
world->wNaffine = width < 0 ? 0 : width;
|
||||
width = SignExtend(value, 10) + 1;
|
||||
world->wAffine = width < 0 ? 0 : width;
|
||||
world->width = world->bgm != 2 ? world->wNaffine : world->wAffine;
|
||||
break;
|
||||
case 8: /* H */
|
||||
|
||||
Reference in New Issue
Block a user