#4756 closed defect (fixed)
ARM: gfxarm.s is not updated for new 16 bit palette support
Reported by: | anotherguest | Owned by: | agent-q |
---|---|---|---|
Priority: | high | Component: | Ports |
Version: | Keywords: | build | |
Cc: | Game: |
Description
When the patch to support 16 bit graphics was added to SVN, the palette for the ClassicCostumeRenderer was changed from byte _palette[32] to uint16 _palette[32].
The gfxarm.s function ClassicProc3RendererShadowARM takes a byte _palette[32] as parameter, and needs to be updated to use the uint16 parameter to work properly.
This results in to things. a) not compiling due to the cast from byte to uint16. b) wrong colours if the uint16 is casted to a byte (duh :-) )
Ticket imported from: #2939258. Ticket imported from: bugs/4756.
Change History (11)
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Change line 249 of proc3ARM.s from:
LDRB r14,[r14, r1] @ r14 = pcolor = _palette[color]
to
LDRB r14,[r14, r1, LSL #1] @ r14 = pcolor = _palette[color]
and you should be sorted.
comment:3 by , 15 years ago
Priority: | normal → high |
---|
comment:4 by , 15 years ago
This bug is nice to get fixed before the release. Raising priority for keeping the track.
comment:5 by , 15 years ago
Summary: | gfxarm.s is not updated for new 16 bit palette support → ARM: gfxarm.s is not updated for new 16 bit palette support |
---|
comment:6 by , 15 years ago
I believe my code change below should work, but I'm not in a position to test it at the moment. I'm waiting to get a reply to my queries from anyone who understands what has actually changed in this area.
My proposed change will ensure that I index the array correctly, but it will still only transfer a byte at a time, not a uint16_t.
DJWillis was going to try this out for me.
comment:7 by , 15 years ago
In the meantime, Neil checked in a fix for this (identical to what Robin proposed) in rev 48135, on February 26 already. So this seems to be fixed in trunk and branch.
comment:8 by , 15 years ago
Owner: | changed from | to
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:9 by , 15 years ago
I can test this tomorrow with a lucas art game. But I don¨'t have any HE 16 bit palette game to test it with, but I don't think this code will be executed in the HE case anyway.
comment:10 by , 15 years ago
Hey Guys, I fixed this in February, as Max mentions. I tested with Monkey Island 1 and Sam & Max and all seemed fine.
comment:11 by , 6 years ago
Component: | → Ports |
---|
So... the palette became a uint16_t array rather than a byte array. Did the contents change? i.e. the values in the array are still the same, just now spaced out by 2 bytes in memory rather than 1 ?