Advertisement
LuigiBlood

Hello World v1 GBA source code

Dec 21st, 2011
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Hello World by Seru-kun/LuigiBlood and Prof.9 (fix) for GBA.
  2.  
  3. .gba
  4. .create hello.gba,0x08000000
  5. .org 0x08000000
  6. .area 0xC0      ;Header Area
  7. header:
  8.     .arm
  9.     b rom_start             ;Start the ROM
  10.     .incbin nintendo.bin
  11.     .db "HELLO WORLD "      ;Game Title
  12.     .db "HOME"              ;Game Code
  13.     .db "01"                ;Maker Code
  14.     .db 0x96                ;Fixed Value
  15.     .db 0x00                ;GBA Model
  16.     .db 0x00                ;Normal Cart
  17.     .fill 7                 ;Reserved Area
  18.     .db 1                   ;Version: 0.1
  19.     .db 0xFF                ;Checksum, must be replaced
  20.     .fill 2
  21. .endarea
  22.  
  23. rom_start:
  24.     .arm
  25.     ldr r0,=rom_start2|1
  26.     bx r0
  27.     .pool
  28.    
  29. rom_start2:
  30.     .thumb
  31.     ldr r0,=GFXData
  32.     ldr r1,=0x06000000
  33.     ldr r2,=TileMap-GFXData
  34.     bl uploadDMA1
  35.     b rom_start3   
  36.     .pool
  37.    
  38. uploadDMA1:
  39.     .thumb
  40. ;Inputs:
  41. ;r0=SourceAddr
  42. ;r1=DestAddr
  43. ;r2=Size (Bytes)
  44.    
  45.     push r3,r4,r14
  46.     ldr r3,=0x040000BC
  47.     str r0,[r3]         ;Put r0 data to 0x040000BC
  48.     str r1,[r3,0x4]     ;Put r1 data to 0x040000C0
  49.     strh r2,[r3,0x8]    ;Put r2 data to 0x040000C4
  50.     mov r4,0x80
  51.     strb r4,[r3,0xB]    ;Begin DMA Channel 1
  52.     pop r3,r4,r15       ;Return
  53.     .pool
  54.    
  55. rom_start3:
  56.     .thumb
  57.     ;Set Palette
  58.     ldr r0,=0x05000000
  59.     ldr r1,=0xFFFF0000
  60.     str r1,[r0] ;Put 0xFFFF0000 to address 0x05000000
  61.    
  62.     ;Set BG1 Map to 0x06000800
  63.     ldr r3,=0x100
  64.     ldr r4,=0x04000000
  65.     strh r3,[r4,0x8] ;Put 0x0100 to address 0x04000008
  66.    
  67.     ;Set BG1 Tile Map
  68.     ldr r0,=TileMap
  69.     ldr r1,=0x06000800
  70.     mov r2,22
  71.    
  72.     bl uploadDMA1
  73.    
  74.     strh r3,[r4] ;Remove Force Blank and activate BG1
  75.    
  76. @@loop:
  77.     b @@loop
  78.     .pool
  79.  
  80.  
  81. .org 0x08001000
  82. GFXData:
  83.     .incbin hello.bin
  84. TileMap:
  85.     .dh 0x0001,0x0002,0x0003,0x0003,0x0004 ;HELLO
  86.     .dh 0x0000 ;space
  87.     .dh 0x0005,0x0004,0x0006,0x0003,0x0007 ;WORLD
  88.    
  89. .close
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement