From a494a3f00ee3bd35ee9ab76f8cd4f164da080113 Mon Sep 17 00:00:00 2001 From: David Guillen Fandos Date: Thu, 25 Mar 2021 21:02:06 +0100 Subject: Move OAM update flag to a register Fix a small bug in MIPS dynarec that affects non -G0 targets --- x86/x86_stub.S | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'x86') diff --git a/x86/x86_stub.S b/x86/x86_stub.S index 9dd3fdd..948572c 100644 --- a/x86/x86_stub.S +++ b/x86/x86_stub.S @@ -28,7 +28,6 @@ _##symbol: #ifndef _WIN32 # External symbols (data + functions) -#define _oam_update oam_update #define _iwram iwram #define _ewram ewram #define _vram vram @@ -50,7 +49,6 @@ _##symbol: #define _execute_store_cpsr_body execute_store_cpsr_body #endif -.global _oam_update .global _iwram .global _ewram .global _vram @@ -75,6 +73,7 @@ _##symbol: .equ CPU_HALT_STATE, (30 * 4) .equ CHANGED_PC_STATUS, (31 * 4) .equ COMPLETED_FRAME, (32 * 4) +.equ OAM_UPDATED, (33 * 4) # destroys ecx and edx @@ -241,7 +240,7 @@ ext_store_vram8b: ret ext_store_oam8: - movl $1, _oam_update # flag OAM update + movl $1, OAM_UPDATED(%ebx) # flag OAM update and $0x3FE, %eax # wrap around address and align to 16bits mov %dl, %dh # copy lower 8bits of value into full 16bits mov %dx, _oam_ram(%eax) # perform 16bit store @@ -332,7 +331,7 @@ ext_store_vram16b: ret ext_store_oam16: - movl $1, _oam_update # flag OAM update + movl $1, OAM_UPDATED(%ebx) # flag OAM update and $0x3FF, %eax # wrap around address mov %dx, _oam_ram(%eax) # perform 16bit store ret @@ -410,7 +409,7 @@ ext_store_vram32b: ret ext_store_oam32: - movl $1, _oam_update # flag OAM update + movl $1, OAM_UPDATED(%ebx) # flag OAM update and $0x3FF, %eax # wrap around address mov %edx, _oam_ram(%eax) # perform 32bit store ret -- cgit v1.2.3 From 7ea6c5e247a742af6f7acfbf215c23264410451f Mon Sep 17 00:00:00 2001 From: David Guillen Fandos Date: Thu, 25 Mar 2021 23:01:20 +0100 Subject: Move OAM RAM to stubs also Makes accesses more efficient for MIPS. Make accesses also fast for palette reads. --- x86/x86_stub.S | 2 ++ 1 file changed, 2 insertions(+) (limited to 'x86') diff --git a/x86/x86_stub.S b/x86/x86_stub.S index 948572c..333c8fd 100644 --- a/x86/x86_stub.S +++ b/x86/x86_stub.S @@ -538,6 +538,8 @@ defsymbl(palette_ram) .space 0x400 defsymbl(palette_ram_converted) .space 0x400 +defsymbl(oam_ram) + .space 0x400 defsymbl(spsr) .space 24 defsymbl(reg_mode) -- cgit v1.2.3