Bonjour,
On n'arrive pas à comprendre l'exécution de notre programme car lorsqu'on arrive au cycle 2159439 de gameboy_run_until, cette dernière appelle timer_bus_listener qui elle-même appelle timer_state pour déterminer l'ancien état.
Dans timer_state, nous nous assurons que timer->cpu et timer->cpu->bus ne soient pas NULL, mais en appelant bus_read à l'adresse TAC, on ne peut pas accéder au contenu pointé par bus[REG_TAC].
On a les commentaires suivants dans le gdb :
112 *data = (bus[address] == NULL) ? 0xFF : *bus[address];
(gdb) p address
$1 = 65287. (= REG_TAC)
(gdb) p bus[address]
Cannot access memory at address 0x800000ffffd448
(gdb) p bus
$2 = (data_t * const *) 0x800000fff7dc10
(gdb) p *bus[address]
Cannot access memory at address 0x800000ffffd448