- 88
- Posts
- 7
- Years
- Seen Jan 16, 2020
Hello!
I've been trying to refresh the player palette without reloading the map (after callasm 0x805BE61). I found this page, and formulated my own assembly routine (below) to load a new palette into the appropriate RAM.
The problem is, if I open a start menu function such as Options, the old palette reappears briefly before opening the menu. And using fadescreen after updating OWs causes the old palette to be permanently attributed to the player again.
So my question is, where else is the player palette stored besides 0x020377F8? Im not too familiar with the OAMT or object data structures so my hunch is that opening a menu loads a palette from there somehow?
I tried using karatekid's assembly routine in the linked post but it didn't seem to work (although chances are I messed up the insertion instructions)
Thanks for any help you can give!
Test Assembly:
I've been trying to refresh the player palette without reloading the map (after callasm 0x805BE61). I found this page, and formulated my own assembly routine (below) to load a new palette into the appropriate RAM.
The problem is, if I open a start menu function such as Options, the old palette reappears briefly before opening the menu. And using fadescreen after updating OWs causes the old palette to be permanently attributed to the player again.
So my question is, where else is the player palette stored besides 0x020377F8? Im not too familiar with the OAMT or object data structures so my hunch is that opening a menu loads a palette from there somehow?
I tried using karatekid's assembly routine in the linked post but it didn't seem to work (although chances are I messed up the insertion instructions)
Thanks for any help you can give!
Test Assembly:
Code:
.align 2
.thumb
Main:
push {r0-r2, lr}
ldr r0, =(0x08900000) @new pal loc
ldr r1, =(0x05000000) @pal 0
mov r2, #0x10
swi 0xb
ldr r1, =(0x020377F8) @player pal
swi 0xb
pop {r0-r2, pc}