Sortie de l'émulateur GameBoy Color TI-Boy CE pour 83P/84+CE
Posted: 07 Dec 2022, 13:06
Il n'y a plus vraiment besoin de le présenter... mais faisons le quand même pour les nouveaux arrivants
TI-Boy CE est un émulateur de console Nintendo Game Boy développé par l'extraordinaire calc84maniac pour ta TI-83 Premium CE / 84 Plus CE
Développé en langage assembleur (ASM), c'est une véritable prouesse technique, exploitant le moindre recoin du matériel de la calculatrice, qui continue dans la lignée des émulateurs que son auteur conçoit depuis de nombreuses années, sur différents modèles de calculatrices TI.
calc84maniac faisait du teasing depuis longtemps par rapport au fait que dans ses multiples réécritures du code du cœur d’émulation, il en profitait pour plus ou moins préparer le terrain à une future évolution du code gérant la console suivante de Nintendo : la Game Boy Color.
Cette console est toujours autant basée sur un processeur Z80, mais ajoute et améliore différents aspects (comme bien entendu la gestion de la couleur), et donc gérer tout ceci relève encore et toujours de l'exploit technique... et on pouvait se demander s'il allait y arriver... 🤔
Courant octobre (ici) puis en novembre (là), on a eu le droit à des previews de la future version qui approchait, compatible GBC, avec des superbes vidéos montrant la performance de l'émulateur
Il disait à l'époque avoir encore quelques bugs à régler, mais que cela ne devait plus prendre très longtemps avant d'être prêt...
TI-Boy CE est un émulateur de console Nintendo Game Boy développé par l'extraordinaire calc84maniac pour ta TI-83 Premium CE / 84 Plus CE
Développé en langage assembleur (ASM), c'est une véritable prouesse technique, exploitant le moindre recoin du matériel de la calculatrice, qui continue dans la lignée des émulateurs que son auteur conçoit depuis de nombreuses années, sur différents modèles de calculatrices TI.
calc84maniac faisait du teasing depuis longtemps par rapport au fait que dans ses multiples réécritures du code du cœur d’émulation, il en profitait pour plus ou moins préparer le terrain à une future évolution du code gérant la console suivante de Nintendo : la Game Boy Color.
Cette console est toujours autant basée sur un processeur Z80, mais ajoute et améliore différents aspects (comme bien entendu la gestion de la couleur), et donc gérer tout ceci relève encore et toujours de l'exploit technique... et on pouvait se demander s'il allait y arriver... 🤔
Courant octobre (ici) puis en novembre (là), on a eu le droit à des previews de la future version qui approchait, compatible GBC, avec des superbes vidéos montrant la performance de l'émulateur
Il disait à l'époque avoir encore quelques bugs à régler, mais que cela ne devait plus prendre très longtemps avant d'être prêt...
Hé bien cette semaine, l'attente est terminée, calc84maniac a enfin publié la nouvelle version majeure v0.3.0 de son émulateur TI-Boy CE, compatible GameBoy Color !
Il a annoncé la nouvelle sur son blog TI-Boy CE et sur le repo GitHub avec son code source.
En quelques mots, il dit que le cœur d'émulation a eu une refonte majeure améliorant les performances et la compatibilité :
On notera par ailleurs l'attention particulière au skin GBC entourant l'écran virtuel, de quoi rappeler des souvenirs...
Voici une vidéo, postée par calc84maniac, mettant en avant les possibilités de l'émulateur en montrant Pokémon Crystal et Mario Golf :
Il a annoncé la nouvelle sur son blog TI-Boy CE et sur le repo GitHub avec son code source.
En quelques mots, il dit que le cœur d'émulation a eu une refonte majeure améliorant les performances et la compatibilité :
calc84maniac wrote:Après une longue année de travail, TI-Boy CE supporte enfin la Game Boy Color ! Cela impliquait une réécriture complète du système de mémoire pour prendre en charge les memory maps des GB et GBC, permettant également une compatibilité et des performances améliorées. La fonction de correction des couleurs a également été grandement améliorée par rapport à ce qui était utilisé dans la colorisation des versions précédentes.
On notera par ailleurs l'attention particulière au skin GBC entourant l'écran virtuel, de quoi rappeler des souvenirs...
Voici une vidéo, postée par calc84maniac, mettant en avant les possibilités de l'émulateur en montrant Pokémon Crystal et Mario Golf :
Pour ceux qui veulent en savoir plus, voici les détails techniques des nouveautés/améliorations de cette nouvelle version (source) :
N'oublions pas de préciser que puisque TI-Boy CE est open-source, les commits sont disponibles sur GitHub
Show/Hide spoilerAfficher/Masquer le spoiler
Added
- Game Boy Color support.
- GBA backwards-compatibility to unlock features in some GBC games.
- Color correction to approximate the color spectrum of a GBC or GBA screen, leveraging native gamma settings.
- Game Boy Color skin for no-scaling mode.
- Brightness change hotkeys usable in menus.
Changed
- Confirmation setting for Load State now also applies to Restart Game.
- Various improvements to the menu, courtesy of runer112:
- Mark per-game options instead of global options with an asterisk.
- Improved menu item alignment and font.
- Majorly rewrite the CPU emulation to improve performance and flexibility of memory access emulation.
- Rearrange the JIT's static register allocation and the ABI of routines called from it.
- Remove dynamically-generated per-opcode memory routines, reducing overhead of memory region selection.
- For special memory accesses (I/O reads or non-RAM writes), dynamically generate minimal trampolines instead.
- For writes to MBC registers, directly use a routine for the specific register to remove range-checking overhead.
- Always pass valid timing info to memory accesses which may require it, removing the need for validity checks.
- Enable complex memory instructions to directly read/write RAM, such as bitwise operations and INC/DEC (HL).
- Allow absolute reads/writes to have variable-length implementations, for better performance with banked memory.
- Change stack bounds-checking to speed up close SP modifications (INC/DEC/ADD SP) and free up a register.
- Use inclusive bounds for the stack to avoid thrashing when touching the high edge of a memory region.
- Improve performance of return prediction by ignoring the stack offset unless the prediction misses.
- Improve performance of self-modifying code checks by using 24-bit comparisons.
- Improve performance of self-modifying JP instructions by using dynamic dispatch instead of recompiling.
- Expand the list of supported instructions in waitloop detection to reduce false negatives.
- Optimize ROM bank switching routine at ROM load time based on the ROM size, to eliminate redundant masking.
- Simplify MBC3 RTC bank switching by handling RTC updates immediately before register writes.
- Refactor the PPU scheduler to speed up writes to STAT and LYC registers.
- Predict future writes to the LYC register based on previous frames, to avoid excessive rescheduling.
- Remove post-vblank event cache to simplify all reschedules, and determine the event only when vblank is reached.
Fixed
- Reduce SPI transfer clock to fix glitchy display on some calculator revisions.
- Increase Flash wait states for increased stability on some calculator revisions.
- Fix game screen corruption in the main menu when showing a confirmation dialog.
- Fix garbled character display when internal ROM title contains invalid characters.
- Fix corruption of a couple of pixels when restoring the home screen.
- Implement more accurate open-bus read behavior for disabled cartridge RAM.
- Implement correct mirroring behavior for MBC2 cartridge RAM.
- Fix reads past the end of ROM banks trimmed by the ROM converter.
- Fix conditions for the window trigger to include writes to LCDC or WY during hblank.
- Fix display of mid-frame sprite changes resulting from direct OAM writes.
- Allow NR30 writes to disable audio channel 3.
- Fix a scheduler edge case which could cause crashes in some games. Fixes Space Invaders (Japan).
N'oublions pas de préciser que puisque TI-Boy CE est open-source, les commits sont disponibles sur GitHub
Et pour la suite ?
Calc84maniac dit que la prochaine mise-à-jour tentera d'améliorer la gestion de certaines choses complexes au niveau de la palette de couleur.
Ensuite, dans une nouvelle version (majeure !), il y aura la gestion du "link" (via connexion USB de la CE), puis du son.
Par contre, il a déjà précisé que ce n'était pas la peine d'attendre un émulateur GBA pour CE, ça n'arrivera pas, le matériel est bien trop différent
Calc84maniac dit que la prochaine mise-à-jour tentera d'améliorer la gestion de certaines choses complexes au niveau de la palette de couleur.
Ensuite, dans une nouvelle version (majeure !), il y aura la gestion du "link" (via connexion USB de la CE), puis du son.
Par contre, il a déjà précisé que ce n'était pas la peine d'attendre un émulateur GBA pour CE, ça n'arrivera pas, le matériel est bien trop différent
Téléchargement: TI-Boy CE pour TI-84 Plus CE et TI-83 Premium CE (Python OK). Note : le convertisseur de ROM n'a pas changé.
(Attention : cette version ne fonctionne pas directement sur CEmu à l'heure actuelle. Pour obtenir une build spéciale qui y fonctionne, il faut juste rebuilder avec
-DCEMU
en suivant les instructions, et désactiver le mode plein-écran de TI-Boy CE)Merci calc84maniac, et amusez-vous bien