.arm .include "gba.inc" .text .global main main: @ Pour utiliser les interruptions, il faut faire quelques choses: @ 1. Les activer (REG_IME bit 0) @ 2. Choisir/activer un (ou plus) types d'interruptions dans REG_IE @ 3. Charger l'adresse de notre interruption dans REG_INTADDR @ 4. (Possiblement) dire au LCD que nous voulons qu'il provoque une interruption @ 5. Armer le bit correspondant à notre interruption dans REG_IF pour dire que l'interruption est finie @ (cette partie va dans le code de notre interruption) ldr r1, =REG_IE @ Quel interruptions voulons nous gérer ? mov r2, #INT_VBLANK @ Les interruptions pendant VBLANK (après finir afficher l'écran) str r2, [r1] @ adr r1, interrupt @ Charger une addresse +/-4k ldr r2, =REG_INTADDR str r1, [r2] @ Maintenant l'adresse de notre interruption est chargée ldr r1, =REG_DISPSTAT @ Display Status, il faut dire au LCD que nous voulons que VBlank ldr r2, [r1] @ déclenche une interruption orr r2, r2, #STAT_VBLANK_IRQ str r2, [r1] ldr r1, =REG_IME @ Interrupt Master Enable mov r2, #INT_ENABLE @ =1 str r2, [r1] @ Activer interruptions @ Préparer le fond mov r0, #REG_DISPCNT @ Display Control Register mov r1, #BG2_ENABLE orr r1, #MODE_1 @ Mode 1 avec BG2 str r1,[r0] ldr r0, =REG_BG2CNT @ BG2 Control Register ldr r1, =ROTBG_SIZE_512x512|BG_COLOR_256|(28<