File: gba.inc - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

001: @@@@@@@@@ KEY PAD DEFINES @@@@@@@@@
002: KEY_A       = 1
003: KEY_B       = 2
004: KEY_SELECT  = 4
005: KEY_START   = 8
006: KEY_RIGHT   = 16
007: KEY_LEFT    = 32
008: KEY_UP      = 64
009: KEY_DOWN    = 128
010: KEY_R       = 256
011: KEY_L       = 512
012: KEYS        = 0x04000130
013: KEYS_HIGH   = 0x04000000
014: KEYS_LOW    = 0x00000130
015: 
016: @@@@@@@@@ Display @@@@@@@@@
017: MODE_0 = 0x00
018: MODE_1 = 0x01
019: MODE_2 = 0x02
020: MODE_3 = 0x03
021: MODE_4 = 0x04
022: MODE_5 = 0x05
023: 
024: BACKBUFFER = 0x010
025: H_BLANK_OAM = 0x020
026: 
027: OBJ_MAP_2D = 0x000
028: OBJ_MAP_1D = 0x040
029: 
030: FORCE_BLANK = 0x080
031: 
032: BG0_ENABLE = 0x0100
033: BG1_ENABLE = 0x0200
034: BG2_ENABLE = 0x0400
035: BG3_ENABLE = 0x0800
036: OBJ_ENABLE = 0x01000        @ = SPRITES_ENABLE: enable sprites
037: WIN1_ENABLE = 0x02000
038: WIN2_ENABLE = 0x04000
039: WINOBJ_ENABLE = 0x08000
040: VRAM = 0x06000000
041: VPAL = 0x05000000
042: REG_DISPCNT = 0x04000000    @
043: 
044: @@@@@@@@@ SPRITES @@@@@@@@@
045: 
046: @*** Attribute 0 ***
047: @ F E D C  B A 9 8  7 6 5 4  3 2 1 0
048: @ S S A M  T T D R  J J J J  J J J J
049: @ 0-7   (J) = Y coordinate of the sprite (pixels)
050: @ 8     (R) = Rotation/Scaling on/off
051: @ 9     (D) = 0 - sprite is single sized;
052: @             1 - sprite is virtually double sized
053: @ A-B   (T) = 00 - normal
054: @             01 - semi-transparent
055: @             10 - obj window
056: @ C     (M) = enables mosaic for this sprite.
057: @ D     (A) = 256 color if on, 16 color if off
058: @ E-F   (S) = Size, MSB in attribute 0, LSB in attribute 1
059: 
060: @ Byte 1 = Y coordinate of the sprite, in pixels
061: @ Byte 2
062: ROTATION_FLAG   =  0x100
063: SIZE_DOUBLE     =  0x200
064: MODE_NORMAL     =  0x000
065: MODE_TRANSPERANT=  0x400
066: MODE_WINDOWED   =  0x800
067: MOSAIC          = 0x1000
068: COLOR_16        = 0x0000
069: COLOR_256       = 0x2000
070: SIZE_8          = 0x0000 @ Only valid for SQUARE
071: SIZE_16         = 0x4000
072: SIZE_32         = 0x8000
073: SIZE_64         = 0xC000
074: 
075: @*** Atribute 1 ***
076: @ FEDC BA98 7654 3210
077: @ SSVH XXXI IIII IIII   (standard sprites)
078: @ SSFF FFFI IIII IIII   (rotation/scaling on)
079: @ 0-8 (I) = X coordinate of the sprite (pixels)
080: @ C   (H) = flip horizinal bit
081: @ D   (V) = flip vertical bit
082: @ 9-D (F) = rotation index (0-31). rotation/scaling data in OAM attribute 3
083: @ E-F (S) = Size of the sprite (LSB)
084: @           4-bit value which sets the size of the sprite in the following way:
085: @           00 00: 8  x 8       10 00: 8  x 16
086: @           00 01: 16 x 16      10 01: 8  x 32
087: @           00 10: 32 x 32      10 10: 16 x 32
088: @           00 11: 64 x 64      10 11: 32 x 64
089: @           01 00: 16 x 8       11 00: Not used
090: @           01 01: 32 x 8       11 01: Not used
091: @           01 10: 32 x 16      11 10: Not used
092: @           01 11: 64 x 32      11 11: Not used
093: 
094: @ Byte 3+1 bit = X coordinate of the sprite, in pixels (9-bit value)
095: @ Byte 4
096: SQUARE          = 0x0000
097: WIDE            = 0x4000
098: TALL            = 0x8000
099: HORIZONTAL_FLIP = 0x1000
100: VERTICAL_FLIP   = 0x2000
101: OAM             = 0x07000000
102: OBJPAL          = 0x5000200
103: CHARMEM         = 0x6010000
104: CHARMEM_MODE3   = 0x6012BFD
105: 
106: @@@@@@@@@ Background @@@@@@@@@
107: 
108: REG_BG0CNT  = 0x4000008
109: REG_BG1CNT  = 0x400000A
110: REG_BG2CNT  = 0x400000C
111: REG_BG3CNT  = 0x400000E
112: REG_BG0HOFS = 0x4000010
113: REG_BG0VOFS = 0x4000012
114: REG_BG1HOFS = 0x4000014
115: REG_BG1VOFS = 0x4000016
116: REG_BG2HOFS = 0x4000018
117: REG_BG2VOFS = 0x400001A
118: REG_BG3HOFS = 0x400001C
119: REG_BG3VOFS = 0x400001E
120: REG_BG2PA   = 0x4000020
121: REG_BG2PB   = 0x4000022
122: REG_BG2PC   = 0x4000024
123: REG_BG2PD   = 0x4000026
124: REG_BG2X    = 0x4000028
125: REG_BG2X_L  = 0x4000028
126: REG_BG2X_H  = 0x400002A
127: REG_BG2Y    = 0x400002C
128: REG_BG2Y_L  = 0x400002C
129: REG_BG2Y_H  = 0x400002E
130: REG_BG3PA   = 0x4000030
131: REG_BG3PB   = 0x4000032
132: REG_BG3PC   = 0x4000034
133: REG_BG3PD   = 0x4000036
134: REG_BG3X    = 0x4000038
135: REG_BG3X_L  = 0x4000038
136: REG_BG3X_H  = 0x400003A
137: REG_BG3Y    = 0x400003C
138: REG_BG3Y_L  = 0x400003C
139: REG_BG3Y_H  = 0x400003E
140: 
141: BG_MOSAIC_ENABLE = 0x40
142: BG_COLOR_256 = 0x80
143: BG_COLOR_16 = 0x0
144: 
145: TEXTBG_SIZE_256x256 = 0x0
146: TEXTBG_SIZE_256x512 = 0x8000
147: TEXTBG_SIZE_512x256 = 0x4000
148: TEXTBG_SIZE_512x512 = 0xC000
149: 
150: ROTBG_SIZE_128x128 = 0x0
151: ROTBG_SIZE_256x256 = 0x4000
152: ROTBG_SIZE_512x512 = 0x8000
153: ROTBG_SIZE_1024x1024 = 0xC000
154: 
155: WRAPAROUND = 0x2000
156: 
157: CHAR_SHIFT = 2 @ Used to shift the number over to the right place in REG_BGxCNT
158: SCREEN_SHIFT = 8
159: 
160: @ Defines for all 32 screen (map data) blocks and 4 character (bitmap data) blocks
161: @ Some of this might not be correct
162: CHAR_BLOCK_0 = 0x6000000
163: CHAR_BLOCK_1 = 0x6004000
164: CHAR_BLOCK_2 = 0x6008000
165: CHAR_BLOCK_3 = 0x600C000
166: SCREEN_BLOCK_0 = 0x6000000
167: SCREEN_BLOCK_1 = 0x6000800
168: SCREEN_BLOCK_2 = 0x6001000
169: SCREEN_BLOCK_3 = 0x6001800
170: SCREEN_BLOCK_4 = 0x6002000
171: SCREEN_BLOCK_5 = 0x6002800
172: SCREEN_BLOCK_6 = 0x6003000
173: SCREEN_BLOCK_7 = 0x6003800
174: SCREEN_BLOCK_8 = 0x6004000
175: SCREEN_BLOCK_9 = 0x6004800
176: SCREEN_BLOCK_10 = 0x6005000
177: SCREEN_BLOCK_11 = 0x6005800
178: SCREEN_BLOCK_12 = 0x6006000
179: SCREEN_BLOCK_13 = 0x6006800
180: SCREEN_BLOCK_14 = 0x6007000
181: SCREEN_BLOCK_15 = 0x6007800
182: SCREEN_BLOCK_16 = 0x6008000
183: SCREEN_BLOCK_17 = 0x6008800
184: SCREEN_BLOCK_18 = 0x6009000
185: SCREEN_BLOCK_19 = 0x6009800
186: SCREEN_BLOCK_20 = 0x600A000
187: SCREEN_BLOCK_21 = 0x600A800
188: SCREEN_BLOCK_22 = 0x600B000
189: SCREEN_BLOCK_23 = 0x600B800
190: SCREEN_BLOCK_24 = 0x600C000
191: SCREEN_BLOCK_25 = 0x600C800
192: SCREEN_BLOCK_26 = 0x600D000
193: SCREEN_BLOCK_27 = 0x600D800
194: SCREEN_BLOCK_28 = 0x600E000
195: SCREEN_BLOCK_29 = 0x600E800
196: SCREEN_BLOCK_30 = 0x600F000
197: SCREEN_BLOCK_31 = 0x600F800
198: 
199: @@@@@@@@@ Sound @@@@@@@@@
200: @ To turn sound on:
201: @   ldr r1,=REG_SOUNDCNT_X
202: @   ldr r0,=0x0081
203: @   str r0,[r1]
204: 
205: REG_SOUND1CNT_L = 0x04000060 @ Sound 1 Sweep control
206: REG_SOUND1CNT_H = 0x04000062 @ Sound 1 Length, wave duty and envelope control
207: REG_SOUND1CNT_X = 0x04000064 @ Sound 1 Frequency, reset and loop control
208: REG_SOUND2CNT_L = 0x04000068 @ Sound 2 Length, wave duty and envelope control
209: REG_SOUND2CNT_H = 0x0400006C @ Sound 2 Frequency, reset and loop control
210: REG_SOUND3CNT_L = 0x04000070 @ Sound 3 Enable and wave ram bank control
211: REG_SOUND3CNT_H = 0x04000072 @ Sound 3 Sound Length and output level control
212: REG_SOUND3CNT_X = 0x04000074 @ Sound 3 Frequency, reset and loop control
213: REG_SOUND4CNT_L = 0x04000078 @ Sound 4 Length, output level and envelope control
214: REG_SOUND4CNT_H = 0x0400007C @ Sound 4 Noise parameters, reset and loop control
215: REG_SOUNDCNT_L  = 0x04000080 @ Sound 1-4 Output level and Stereo control
216: REG_SOUNDCNT_H  = 0x04000082 @ Direct Sound control and Sound 1-4 output ratio
217: REG_SOUNDCNT_X  = 0x04000084 @ Master sound enable and Sound 1-4 play status
218: REG_SOUNDBIAS   = 0x04000088 @ Sound bias and Amplitude resolution control
219: REG_WAVE_RAM0_L = 0x04000090 @ Sound 3 samples 0-3
220: REG_WAVE_RAM0_H = 0x04000092 @ Sound 3 samples 4-7
221: REG_WAVE_RAM1_L = 0x04000094 @ Sound 3 samples 8-11
222: REG_WAVE_RAM1_H = 0x04000096 @ Sound 3 samples 12-15
223: REG_WAVE_RAM2_L = 0x04000098 @ Sound 3 samples 16-19
224: REG_WAVE_RAM2_H = 0x0400009A @ Sound 3 samples 20-23
225: REG_WAVE_RAM3_L = 0x0400009C @ Sound 3 samples 23-27
226: REG_WAVE_RAM3_H = 0x0400009E @ Sound 3 samples 28-31
227: REG_FIFO_A_L    = 0x040000A0 @ Direct Sound channel A samples 0-1
228: REG_FIFO_A_H    = 0x040000A2 @ Direct Sound channel A samples 2-3
229: REG_FIFO_B_L    = 0x040000A4 @ Direct Sound channel B samples 0-1
230: REG_FIFO_B_H    = 0x040000A6 @ Direct Sound channel B samples 2-3