Bonjour,
Pour apporter encore des précisions quand à l'exécution du bootrom, voici les premières instructions :
{kind = DIRECT, family = LD_R16SP_N16, opcode = 49 '1', bytes = 3 '\003', cycles = 3 '\003', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_R16SP_N16, opcode = 33 '!', bytes = 3 '\003', cycles = 3 '\003', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = JR_CC_E8, opcode = 40 '(', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = JR_CC_E8, opcode = 40 '(', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = JR_CC_E8, opcode = 40 '(', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = JR_CC_E8, opcode = 40 '(', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
Comme prévu.
Ensuite au cycle i = 17556, on appelle bel est bien : cpu_request_interrupt(&gameboy->cpu, VBLANK);
et l'instruction lue dans le même cycle est :
{kind = DIRECT, family = LD_HLRU_A, opcode = 34 '"', bytes = 1 '\001', cycles = 2 '\002', xtra_cycles = 0 '\000'}
Ensuite :
i = 17557
pas d'instruction, car idle_time = 0
donc cpu->idle_time -= 1;
i = 17558
{kind = PREFIXED, family = BIT_U3_R8, opcode = 108 'l', bytes = 2 '\002', cycles = 2 '\002', xtra_cycles = 0 '\000'}
....
On retourne dans la boucle...
Quelqu'un pourrait peut-être nous éclairer en comparant avec les sorties attendues ?
Merci