Prev: A4B0 Up: Map Next: A69C
A4BE: The address of every sprite's graphics
239 addresses, two bytes each, indexed by sprite number less one, running from SPRITE_TABLE up to the graphics. The graphics themselves start immediately after it.
It is three tables end to end, which is why the count is 239. The first 161 entries, up to FURNITURE_SPRITES, are the creatures and objects -- two bytes wide, one byte of row count. The next 39, from FURNITURE_SPRITES, are the pieces the rooms are furnished with, which carry a width as well. The last 39, from FURNITURE_COLOURS, are not pictures at all: they are those same pieces' attribute tables, one colour per character cell in the same width-and-height format.
Entry N of the third table belongs to entry N of the second, which is how one picture serves four doors: $A9 to $AC all point at the graphic at GFX_A9 and differ only in their colours -- $43 $42 for red, $44 green, $45 cyan, $46 yellow. The three bases the code uses, SPRITE_TABLE, FURNITURE_SPRITES and FURNITURE_COLOURS, are not a bias trick after all; they are simply where each table starts.
The count is measured rather than assumed: every code was drawn on a machine of its own with its reads logged, and 239 is the highest whose entry points at something the drawing code can read. Entries beyond that hold values like $1804 and $33F8, which are not addresses in this game at all.
FETCH_SPRITE and FETCH_SPRITE_ATTRS were read here as biased views of a single table, on the grounds that FURNITURE_SPRITES is its 161st entry and FURNITURE_COLOURS its 200th. That is arithmetically true and the wrong way round: they are separate tables, and the arithmetic works because they follow each other.
SPRITE_TABLE A4BE DEFW GFX_01,$AE31,$AE56,$AE31
A4C6 DEFW GFX_05,$AEA0,$AEC5,$AEA0
A4CE DEFW GFX_09,$ADC2,$ADE7,$ADC2
A4D6 DEFW GFX_0D,$AD53,$AD78,$AD53
A4DE DEFW GFX_11,$B8A5,$B8CE,$B8A5
A4E6 DEFW GFX_15,$B920,$B949,$B920
A4EE DEFW GFX_19,$B82A,$B853,$B82A
A4F6 DEFW GFX_1D,$B7AF,$B7D8,$B7AF
A4FE DEFW GFX_21,$B639,$B65E,$B639
A506 DEFW GFX_25,$B6A8,$B6CD,$B6A8
A50E DEFW GFX_29,$B5CA,$B5EF,$B5CA
A516 DEFW GFX_2D,$B55B,$B580,$B55B
A51E DEFW GFX_31,$BBDC,$BC05,$BB60
A526 DEFW GFX_35,GFX_35,$BBBD,$BA16
A52E DEFW GFX_39,$B9E2,$B98B,$B9A6
A536 DEFW GFX_3D,$B972,$BA37,$BA58
A53E DEFW GFX_41,$BA9A,$BABB,$BADC
A546 DEFW GFX_45,$BB1E,$BB3F,$BC2E
A54E DEFW GFX_49,$BC70,$BC9F,$BD30
A556 DEFW GFX_4D,$D2C0,$D2D7,$C124
A55E DEFW GFX_51,$C1CB,$C1F4,$C219
A566 DEFW GFX_55,$B019,$AF6C,$C23A
A56E DEFW GFX_59,$C26E,$C28D,$C310
A576 DEFW GFX_5D,$C34A,$C36B,$C38C
A57E DEFW GFX_61,$C3B6,$C3DF,$AEEA
A586 DEFW NO_GRAPHIC,NO_GRAPHIC,NO_GRAPHIC,$C408
A58E DEFW GFX_69,$C44A,$C46F,$C5F8
A596 DEFW GFX_6D,$C62A,$C649,$CB46
A59E DEFW GFX_71,$CBA8,GFX_71,$CBD9
A5A6 DEFW GFX_75,$CC3B,GFX_75,$CC6C
A5AE DEFW GFX_79,$CCCE,GFX_79,$CCFF
A5B6 DEFW GFX_7D,$CD61,GFX_7D,$AF0D
A5BE DEFW GFX_81,$AF43,$C16E,$AF95
A5C6 DEFW GFX_85,$AFD7,$C18F,$C14D
A5CE DEFW GFX_89,$CDBD,$D29F,$D1D5
A5D6 DEFW GFX_8D,$D20B,$CD92,$CE01
A5DE DEFW GFX_91,$CE5B,$CE88,$CEB5
A5E6 DEFW GFX_95,$CF03,$CF2A,$CF51
A5EE DEFW GFX_99,$CF93,$CFAE,$D3D3
A5F6 DEFW GFX_9D,$D435,GFX_9D,$AEEA
A5FE DEFW GFX_A1
FURNITURE_SPRITES A600 DEFW GFX_A2,$A76E,$B3EA,$AEEA
A608 DEFW NO_GRAPHIC,NO_GRAPHIC,NO_GRAPHIC,$A69C
A610 DEFW GFX_A9,GFX_A9,GFX_A9,$C2AE
A618 DEFW GFX_AD,GFX_AD,GFX_AD,$B6F2
A620 DEFW GFX_B2,$A7EC,$C542
ROAST_SPRITE A626 DEFW GFX_B5 The roast chicken's entry, which DRAW_FOOD moves on past the rows eaten
A628 DEFW GFX_B6,$C6AC,$C6CE,$C7F2
A630 DEFW GFX_BA,$CFD5,$C874,$C9CA
A638 DEFW GFX_BE,$CA0E,$AEEA,$CA82
A640 DEFW GFX_A3,$CAE4,$BCCE,$D069
A648 DEFW GFX_C6,$D2EE,$D466
FURNITURE_COLOURS A64E DEFW ATTRS_C9,$A7D0,$B4AC,$AEEA
A656 DEFW NO_GRAPHIC,NO_GRAPHIC,NO_GRAPHIC,$A6FE
A65E DEFW ATTRS_D1,$A71A,$A728,$A736
A666 DEFW ATTRS_D5,$A752,$A760,$B774
A66E DEFW ATTRS_D9,$A846,$AEEA,$AEEA
A676 DEFW ATTRS_DD,$C96A,$C970,$C998
A67E DEFW ATTRS_E1,$D057,$C9AA,$CA50
A686 DEFW ATTRS_E5,$CA5C,$AEEA,$CA74
A68E DEFW ATTRS_CA,$CA66,$A7DE,$D1AB
A696 DEFW ATTRS_ED,$D3B8,$D4EF
Prev: A4B0 Up: Map Next: A69C