Opened 11 years ago

Closed 11 years ago

Last modified 2 years ago

#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:


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 SF/robinwatts, 11 years ago

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 ?

comment:2 by SF/robinwatts, 11 years ago

Change line 249 of proc3ARM.s from:

LDRB r14,[r14, r1] @ r14 = pcolor = _palette[color]


LDRB r14,[r14, r1, LSL #1] @ r14 = pcolor = _palette[color]

and you should be sorted.

comment:3 by sev-, 11 years ago

Priority: normalhigh

comment:4 by sev-, 11 years ago

This bug is nice to get fixed before the release. Raising priority for keeping the track.

comment:5 by fingolfin, 11 years ago

Summary: gfxarm.s is not updated for new 16 bit palette supportARM: gfxarm.s is not updated for new 16 bit palette support

comment:6 by SF/robinwatts, 11 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 fingolfin, 11 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 fingolfin, 11 years ago

Owner: changed from SF/robinwatts to agent-q
Resolution: fixed
Status: newclosed

comment:9 by anotherguest, 11 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 agent-q, 11 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 digitall, 2 years ago

Component: Ports
Note: See TracTickets for help on using tickets.