001: .arm
002: .include "gba.inc"
003: .text
004: .global main
005:
006: main:
007: @ Pour utiliser les interruptions, il faut faire quelques choses:
008: @ 1. Les activer (REG_IME bit 0)
009: @ 2. Choisir/activer un (ou plus) types d'interruptions dans REG_IE
010: @ 3. Charger l'adresse de notre interruption dans REG_INTADDR
011: @ 4. (Possiblement) dire au LCD que nous voulons qu'il provoque une interruption
012: @ 5. Armer le bit correspondant � notre interruption dans REG_IF pour dire que l'interruption est finie
013: @ (cette partie va dans le code de notre interruption)
014: ldr r1, =REG_IE @ Quel interruptions voulons nous g�rer ?
015: mov r2, #INT_VBLANK @ Les interruptions pendant VBLANK (apr�s finir afficher l'�cran)
016: str r2, [r1] @
017:
018: adr r1, interrupt @ Charger une addresse +/-4k
019: ldr r2, =REG_INTADDR
020: str r1, [r2] @ Maintenant l'adresse de notre interruption est charg�e
021:
022: ldr r1, =REG_DISPSTAT @ Display Status, il faut dire au LCD que nous voulons que VBlank
023: ldr r2, [r1] @ d�clenche une interruption
024: orr r2, r2, #STAT_VBLANK_IRQ
025: str r2, [r1]
026:
027: ldr r1, =REG_IME @ Interrupt Master Enable
028: mov r2, #INT_ENABLE @ =1
029: str r2, [r1] @ Activer interruptions
030:
031: @ Pr�parer le fond
032: mov r0, #REG_DISPCNT @ Display Control Register
033: mov r1, #BG2_ENABLE
034: orr r1, #MODE_1 @ Mode 1 avec BG2
035: str r1,[r0]
036:
037: ldr r0, =REG_BG2CNT @ BG2 Control Register
038: ldr r1, =ROTBG_SIZE_512x512|BG_COLOR_256|(28<<SCREEN_SHIFT)|(0<<CHAR_SHIFT)
039: @ Screen Base Block Number :
040: @ O� commence le tilemap, ici 0x6000000 + 28*0x800
041: @ Char Base Block Number :
042: @ O� commence le tiledata, ici 0x6000000 + 0*0x4000
043: str r1, [r0] @ Charger l'information dans le registre de BG2
044:
045: @ Charger les sprites dans le CHAR BLOCK
046: ldr r1, =sprites
047: ldr r0, =REG_DMA3SAD @ Adresse de source
048: str r1, [r0], #4 @ Charger l'addresse et avancer 4 octets
049: @ Maintenant r0 = REG_DMA3DAD
050: mov r1, #CHAR_BLOCK_0 @ = 0x6000000 (align�, donc on peut utiliser mov)
051: str r1, [r0], #4 @ Charger l'addresse de destination
052: @ Maintenant r0 = REG_DMA3CNT (counter)
053: mov r1, #DMA_ENABLE @ Faire le DMA, valeurs par d�faut : halfword et s'ex�cuter imm�diatement
054: orr r1, r1, #(32*32)*32/4 @ = un sprite 32x32, mais on l'affiche quatre octets � la fois
055: str r1, [r0] @ Faire le DMA
056: @ Peut-�tre l'on /\ peut y ajouter #-8 ?
057:
058: @ Charger les tuiles dans le SCREEN BLOCK
059: ldr r1, =map
060: ldr r0, =REG_DMA3SAD @ Adresse de source
061: str r1, [r0], #4 @ Charger l'addresse et avancer 4 octets
062: @ Maintenant r0 = REG_DMA3DAD
063: ldr r1, =SCREEN_BLOCK_28
064: str r1, [r0], #4 @ Charger l'addresse de destination
065: @ Maintenant r0 = REG_DMA3CNT (counter)
066: mov r1, #DMA_32NOW @ Faire le DMA avec des words (32 bits)
067: orr r1, r1, #16*32*4 @ Combien d'octets � copier
068: str r1, [r0] @ Faire le DMA
069:
070: @ Charger la palette dans VPAL
071: ldr r1, =palette
072: ldr r0, =REG_DMA3SAD @ Adresse de source
073: str r1, [r0], #4 @ Charger l'addresse et avancer 4 octets
074: @ Maintenant r0 = REG_DMA3DAD
075: mov r1, #VPAL @ = 0x05000000 (align�)
076: str r1, [r0], #4 @ Charger l'addresse de destination
077: @ Maintenant r0 = REG_DMA3CNT (counter)
078: mov r1, #DMA_32NOW @ Faire le DMA avec des words (32 bits)
079: orr r1, r1, #128 @ 256 couleurs, chaqu'un occupe 2 octets, transf�rer avec des words (4 octets)
080: str r1, [r0] @ Faire le DMA
081:
082: dontQuit:
083: bl getKey
084: @ Quelle touche a-t-on pouss�e ?
085: ldr r0, =x
086: ldr r1, =y
087:
088: tst r4, #KEY_UP
089: bleq keyUp
090: tst r4, #KEY_DOWN
091: bleq keyDown
092: tst r4, #KEY_RIGHT
093: bleq keyRight
094: tst r4, #KEY_LEFT
095: bleq keyLeft
096:
097: mov r0,#0x200
098: delayLoop:
099: subs r0,r0,#1
100: bne delayLoop
101: b dontQuit
102:
103: keyUp:
104: ldr r2, [r1] @ Charger octet (Y) � [r1] dans r2
105: subs r2, r2, #1 @ Y-1
106: bxcc lr @ Si Y-1 arme le drapeau C, quitter
107: str r2, [r1] @ Sauver nouvelle coordonn�e
108: bx lr @ Quitter la routine
109: keyDown:
110: ldr r2, [r1] @ Y
111: add r2, r2, #1 @ Y+1
112: cmp r2, #160
113: bxcs lr
114: str r2, [r1] @ Sauver nouvelle coordonn�e
115: bx lr @ Quitter la routine
116: keyRight:
117: ldrb r2, [r0] @ X
118: add r2, r2, #1 @ X+1
119: cmp r2, #240
120: bxcs lr
121: strb r2, [r0] @ Sauver nouvelle coordonn�e
122: bx lr @ Quitter la routine
123: keyLeft:
124: ldrb r2, [r0] @ X
125: subs r2, r2, #1 @ X-1
126: bxcc lr
127: strb r2, [r0] @ Sauver nouvelle coordonn�e
128: bx lr @ Quitter la routine
129:
130: getKey:
131: mov r3, #KEYS_HIGH @ MSB
132: orr r3, r3, #KEYS_LOW @ Ajouter LSB de l'adresse
133: mov r2, #0x300
134: orr r2, #0xFF @ r2 = $3FF
135: getKeyLoop:
136: ldr r4, [r3] @ Lire les touches pouss�es
137: teq r4, r2 @ Si nous n'avons pas appuy� sur une touche
138: beq getKeyLoop @ ... r�p�ter
139: bx lr @ Quitter la routine
140:
141: interrupt:
142: ldr r0, =REG_DISPSTAT
143: ldr r0, [r0] @ Valeur du Display Status Register (pour savoir si on a activer les interruptions HBLANK/VBLANK/VCOUNTER,
144: @ si un VBLANK/HBLANK est actif, etc.)
145: ands r0, r0, #STAT_VBLANK
146: beq quitInterrupt @ Si l'interruption n'est pas un VBLANK, quitter
147: ldr r0, =x
148: ldr r1, =y
149:
150: ldr r0,[r0] @ Charger X
151: ldr r1,[r1] @ Charger Y
152: mov r0,r0,LSL #8 @ Premier 8 bits de REG_BG2X = fraction
153: mov r1,r1,LSL #8
154: ldr r3,=REG_BG2X
155:
156: str r0,[r3], #4 @ X
157: str r1,[r3] @ Y REG_BG2Y
158: quitInterrupt:
159: ldr r1, =REG_IF @ Il faut dire que l'interruption est finie
160: mov r2, #INT_VBLANK @
161: str r2,[r1] @
162: bx lr
163:
164: .ltorg
165:
166: sprites:
167: .incbin "Chili.bin"
168: palette:
169: .incbin "Chili.pal"
170: map:
171: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
172: .byte 0x4,0x5,0x6,0x7, 0x3,0x2,0x1,0x0, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
173: .byte 0x8,0x9,0xA,0xB, 0x0,0x1,0x2,0x3, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
174: .byte 0xC,0xD,0xE,0xF, 0x3,0x2,0x1,0x0, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
175:
176: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
177: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x3,0x2,0x1,0x0,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
178: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x0,0x1,0x2,0x3,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
179: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0x3,0x2,0x1,0x0,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
180:
181: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
182: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
183: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
184: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
185:
186: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
187: .byte 0x4,0x5,0x6,0x7, 0x3,0x2,0x1,0x0, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
188: .byte 0x8,0x9,0xA,0xB, 0x0,0x1,0x2,0x3, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
189: .byte 0xC,0xD,0xE,0xF, 0x3,0x2,0x1,0x0, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
190:
191: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
192: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
193: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
194: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
195:
196: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
197: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
198: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
199: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
200:
201: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
202: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
203: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
204: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
205:
206: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
207: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
208: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
209: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
210:
211: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
212: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
213: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
214: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
215:
216: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
217: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
218: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
219: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
220:
221: .byte 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3, 0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3
222: .byte 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7, 0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7,0x4,0x5,0x6,0x7
223: .byte 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB, 0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB,0x8,0x9,0xA,0xB
224: .byte 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF, 0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF,0xC,0xD,0xE,0xF
225:
226: .data
227: x: .word 0
228: y: .word 0