Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Excerpt from display.h:
- #define BASE_REG 0x4000000
- #define DISPLAY_BG_MODE_0 (0)
- #define DISPLAY_BG_MODE_1 (1)
- #define DISPLAY_BG_MODE_2 (2)
- #define DISPLAY_BG_MODE_3 (3)
- #define DISPLAY_BG_MODE_4 (4)
- #define DISPLAY_BG_MODE_5 (5)
- #define DISPLAY_MODE_GBA (0 << 3)
- #define DISPLAY_MODE_CGB (1 << 3)
- #define DISPLAY_SELECT_FRAME_0 (0 << 4)
- #define DISPLAY_SELECT_FRAME_1 (1 << 4)
- #define DISPLAY_HBLANK_FREE (1 << 5)
- #define DISPLAY_OBJ_VRAM_MAPPING (1 << 6)
- #define DISPLAY_FORCED_BLANK (1 << 7)
- #define DISPLAY_SHOW_BG0 (1 << 8)
- #define DISPLAY_SHOW_BG1 (1 << 9)
- #define DISPLAY_SHOW_BG2 (1 << 10)
- #define DISPLAY_SHOW_BG3 (1 << 11)
- #define DISPLAY_SHOW_OBJ (1 << 12)
- #define DISPLAY_SHOW_WIN0 (1 << 13)
- #define DISPLAY_SHOW_WIN1 (1 << 14)
- #define DISPLAY_SHOW_WIN_OBJ (1 << 15)
- typedef struct display_control_reg {
- union {
- unsigned short raw;
- struct __attribute__((packed)) {
- unsigned bg_mode : 3;
- unsigned cgb_gba : 1;
- unsigned display_frame_select : 1;
- unsigned hblank_free : 1;
- unsigned obj_vram_mapping : 1;
- unsigned forced_blank : 1;
- unsigned display_bg0 : 1;
- unsigned display_bg1 : 1;
- unsigned display_bg2 : 1;
- unsigned display_bg3 : 1;
- unsigned display_obj : 1;
- unsigned display_win0 : 1;
- unsigned display_win1 : 1;
- unsigned display_win_obj : 1;
- };
- };
- } display_control_reg_t;
- #define display_control_register (*(display_control_reg_t *)BASE_REG)
- // excerpt from main.c
- display_control_register.raw = 0;
- display_control_register.bg_mode = 3;
- display_control_register.display_bg2 = 1;
- // code generated by gcc
- 08000340 <main>:
- 8000340: b500 push {lr}
- 8000342: 2380 movs r3, #128 ; 0x80
- 8000344: 04db lsls r3, r3, #19
- 8000346: 2200 movs r2, #0
- 8000348: 801a strh r2, [r3, #0]
- 800034a: 7859 ldrb r1, [r3, #1]
- 800034c: 2204 movs r2, #4
- 800034e: 430a orrs r2, r1
- 8000350: 705a strb r2, [r3, #1]
- 8000352: 23c0 movs r3, #192 ; 0xc0
- 8000354: 4a03 ldr r2, [pc, #12] ; (8000364 <main+0x24>)
- 8000356: 04db lsls r3, r3, #19
- 8000358: 211f movs r1, #31
- 800035a: 8019 strh r1, [r3, #0]
- 800035c: 3302 adds r3, #2
- 800035e: 4293 cmp r3, r2
- 8000360: d1fb bne.n 800035a <main+0x1a>
- 8000362: e7fe b.n 8000362 <main+0x22>
- 8000364: 06012c00 .word 0x06012c00
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement