Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » La compatibilité des add-in sur la graph 35+e II
Goldsheep Hors ligne Membre Points: 11 Défis: 0 Message

La compatibilité des add-in sur la graph 35+e II

Posté le 10/09/2020 09:25

Bonjour,

Voici une liste des add-in fonctionnels et non fonctionnels sur la récente graph 35+e II parce que why not:

Fonctionnels:
- Immeuble
- Connect 4 AI
- Jetpack Joyride

Non fonctionnels:
- Fruit ninja
- Gravity duck
- wolfenshtein 3d
- Zelda PC
- Terrario (en train d'être porté)
- 2048 Deluxe
- Pokemon Stadium

Envoyez dans les commentaires des jeux que vous avez testé et dites s'ils marchent ! Si tout bug et ne répond plus, enclenchez simplement le bouton restart à l'arrière de la calculatrice. Je compte sur vous pour aggrandir la liste !


Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 12/09/2020 11:17 | #


Aha so you got there faster than me, thank you. I was automating this change on ML_display_vram(). Unfortunately this is not enough yet, this version of Jetpack kinda works but really doesn't. The display is shifted suspiciously to the bottom, and there are a lot of visual artifacts. Turning the calc (screen) on and off restores the parameters but this is definitely not usable.

Jetpack's code might use other direct-DD functions, I'll keep looking into that.
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 12/09/2020 12:10 | #


I found ML_vram_adress(); at 0x008ed8 to 0x008ef2
I found ML_clear_vram(); at 0x008ef4 to 0x008f4e
I found ML_display_vram(); at 0x008f50 to 0x008fc2
I found ML_pixel(); at 0x008fc4 to 0x00904e
I couldn't find ML_clear_display(); - He mustn't have used it (commented out the #define)

;    ----------------    ML_vram_adress();
008ed8    4f22    sts.l    pr,                @-r15
008eda    e700    mov        #H'0,            r7
008edc    d336    mov.l    @(H'd8,pc),        r3                    ;@(H'8fb8)
008ede    6673    mov        r7,    r6
008ee0    9267    mov.w    _GetVRAMAddress,r2                    ;@(H'8fb2)
008ee2    6573    mov        r7,                r5
008ee4    6033    mov        r3,                r0
008ee6    2f26    mov.l    r2,                @-r15
008ee8    400b    jsr        @r0
008eea    6473    mov        r7,                r4
008eec    7f04    add        #4,                r15
008eee    4f26    lds.l    @r15+,            pr
008ef0    000b    rts
008ef2    0009    nop
;    ----------------    ML_vram_adress();


;    ----------------    ML_clear_vram();
008ef4    2fd6    mov.l    r13,            @-r15
008ef6    4f22    sts.l    pr,                @-r15
008ef8    bfee    bsr        H'-24                    ;@(H'8ed8)    ML_vram_adress();
008efa    0009    nop
008efc    6703    mov        r0,                r7
008efe    e004    mov        #H'4,            r0
008f00    3078    sub        r7,                r0
008f02    e603    mov        #H'3,            r6
008f04    2609    and        r0,                r6
008f06    6d73    mov        r7,                r13
008f08    e400    mov        #H'0,            r4
008f0a    6143    mov        r4,                r1
008f0c    4615    cmp/pl    r6
008f0e    8f05    bf/s    H'a                        ;@(H'8f1c)
008f10    6573    mov        r7,                r5
008f12    7101    add        #1,                r1
008f14    2540    mov.b    r4,                @r5
008f16    3163    cmp/ge    r6,                r1
008f18    8ffb    bf/s    H'-a                    ;@(H'8f12)
008f1a    7501    add        #1,                r5
008f1c    904a    mov.w    @(H'94,pc),        r0        ;@(H'8fb4)
008f1e    6163    mov        r6,                r1
008f20    317c    add        r7,                r1
008f22    6513    mov        r1,                r5
008f24    301c    add        r1,                r0
008f26    2542    mov.l    r4,                @r5
008f28    7504    add        #4,                r5
008f2a    3502    cmp/hs    r0,                r5
008f2c    8bfb    bf        H'-a                    ;@(H'8f26)
008f2e    9241    mov.w    @(H'82,pc),        r2        ;@(H'8fb4)
008f30    362c    add        r2,                r6
008f32    3d6c    add        r6,                r13
008f34    e603    mov        #H'3,            r6
008f36    2679    and        r7,                r6
008f38    6743    mov        r4,                r7
008f3a    4615    cmp/pl    r6
008f3c    8f05    bf/s    H'a                        ;@(H'8f4a)
008f3e    65d3    mov        r13,            r5
008f40    2540    mov.b    r4,                @r5
008f42    7701    add        #1,                r7
008f44    3763    cmp/ge    r6,                r7
008f46    8ffb    bf/s    H'-a                    ;@(H'8f40)
008f48    7501    add        #1,                r5
008f4a    4f26    lds.l    @r15+,            pr
008f4c    000b    rts
008f4e    6df6    mov.l    @r15+,            r13
;    ----------------    ML_clear_vram();


;    ----------------    ML_display_vram();
008f50    2fc6    mov.l    r12,            @-r15
008f52    2fb6    mov.l    r11,            @-r15
008f54    2fa6    mov.l    r10,            @-r15
008f56    2f96    mov.l    r9,                @-r15
008f58    4f22    sts.l    pr,                @-r15
008f5a    bfbd    bsr        H'-86                    ;@(H'8ed8)    ML_vram_adress();
008f5c    0009    nop
008f5e    6c03    mov        r0,                r12        ; Vram address
008f60    d516    mov.l    _LCD_reg_sel,    r5        ;@(H'8fbc)
008f62    e940    mov        #64,            r9        ; rows
008f64    d416    mov.l    _LCD_data_reg,    r4        ;@(H'8fc0)
008f66    ea10    mov        #16,            r10        ; cols
008f68    eb0a    mov        #10,            r11        ; 7
008f6a    e104    mov        #4,                r1        ; 0
008f6c    e708    mov        #8,                r7        ; 4
008f6e    6013    mov        r1,                r0    
    _Row:
008f70    2570    mov.b    r7,                @r5
008f72    e280    mov        #-128,            r2        ; 192
008f74    220b    or        r0,                r2
008f76    66a3    mov        r10,            r6
008f78    2420    mov.b    r2,                @r4
008f7a    2570    mov.b    r7,                @r5
008f7c    2410    mov.b    r1,                @r4
008f7e    25b0    mov.b    r11,            @r5
    _Col:
008f80    63c4    mov.b    @r12+,            r3
008f82    4610    dt        r6
008f84    8ffc    bf/s    _Col                    ;@(H'8f80)
008f86    2430    mov.b    r3,                @r4
008f88    7001    
008f8a    3093    cmp/ge    r9,                r0
008f8c    8bf0    bf        _Row                    ;@(H'8f70)
008f8e    4f26    lds.l    @r15+,            pr
008f90    69f6    mov.l    @r15+,            r9
008f92    6af6    mov.l    @r15+,            r10
008f94    6bf6    mov.l    @r15+,            r11
008f96    000b    rts
008f98    6cf6    mov.l    @r15+,            r12
008f9a    e306    mov        #6,                r3
008f9c    d207    mov.l    _LCD_reg_sel,    r2        ;@(H'8fbc)
008f9e    2230    mov.b    r3,                @r2
008fa0    d107    mov.l    _LCD_data_reg,    r1        ;@(H'8fc0)
008fa2    000b    rts
008fa4    2140    mov.b    r4,                @r1
008fa6    e306    mov        #6,                r3
008fa8    d204    mov.l    _LCD_reg_sel    ,r2        ;@(H'8fbc)
008faa    2230    mov.b    r3,                @r2
008fac    d104    mov.l    _LCD_data_reg,    r1        ;@(H'8fc0)
008fae    000b    rts
008fb0    6010    mov.b    @r1,            r0    
    _GetVRAMAddress:
008fb2    0135    .DATA.W    H'0135                    ; GetVRAMAddress(); SYSCALL
008fb4    03fc    .DATA.W    H'03FC                    ; Used in ML_clear_vram();
008fb6    0000    .DATA.W    H'0000                    ; 4 align
    _SYSCALL_ADDRESS:
008fb8    0032    .DATA.L    H'0032130C                ; Used in ML_vram_address();    (char*)((*SysCall)(0, 0, 0, 0, 0x0135));
008fba    130c
    _LCD_reg_sel:
008fbc    b400    .DATA.L H'B4000000                ; *LCD_register_selector
008fbe    0000    
    _LCD_data_reg:
008fc0    b401    .DATA.L H'B4010000                ; *LCD_data_register
008fc2    0000    
;    ----------------    ML_display_vram();


;    ----------------    ML_pixel();
008fc4    2fe6    mov.l    r14,            @-r15
008fc6    6e43    mov        r4,                r14
008fc8    2fd6    mov.l    r13,            @-r15
008fca    6d53    mov        r5,                r13
008fcc    4f22    sts.l    pr,                @-r15
008fce    7ffc    add        #H'fc,            r15
008fd0    bf82    bsr        H'-fc                    ;@(H'8ed8)
008fd2    2f62    mov.l    r6,                @r15
008fd4    e280    mov        #H'ffffff80,    r2
008fd6    22e8    tst        r14,            r2
008fd8    8f35    bf/s    H'6a                    ;@(H'9046)
008fda    6603    mov        r0,                r6
008fdc    e1c0    mov        #H'ffffffc0,    r1
008fde    21d8    tst        r13,            r1
008fe0    8b31    bf        H'62                    ;@(H'9046)
008fe2    64d3    mov        r13,            r4
008fe4    957f    mov.w    @(H'fe,pc),        r5        ;@(H'90e6)
008fe6    63e3    mov        r14,            r3
008fe8    60f2    mov.l    @r15,            r0
008fea    4408    shll2    r4
008fec    4408    shll2    r4
008fee    4321    shar    r3
008ff0    4321    shar    r3
008ff2    4321    shar    r3
008ff4    343c    add        r3,                r4
008ff6    346c    add        r6,                r4
008ff8    e307    mov        #H'7,            r3
008ffa    23e9    and        r14,            r3
008ffc    633b    neg        r3,                r3
008ffe    8801    cmp/eq    #H'1,            r0
009000    8d08    bt/s    H'10                    ;@(H'9014)
009002    453c    shad    r3,                r5
009004    8800    cmp/eq    #H'0,            r0
009006    8908    bt        H'10                    ;@(H'901a)
009008    8802    cmp/eq    #H'2,            r0
00900a    890a    bt        H'14                    ;@(H'9022)
00900c    8803    cmp/eq    #H'3,            r0
00900e    890c    bt        H'18                    ;@(H'902a)
009010    a019    bra        H'32                    ;@(H'9046)
009012    0009    nop
009014    6340    mov.b    @r4,            r3
009016    a011    bra        H'22                    ;@(H'903c)
009018    235b    or        r5,                r3
00901a    6557    not        r5,                r5
00901c    6340    mov.b    @r4,            r3
00901e    a00d    bra        H'1a                    ;@(H'903c)
009020    2359    and        r5,                r3
009022    6140    mov.b    @r4,            r1
009024    215a    xor        r5,                r1
009026    a00e    bra        H'1c                    ;@(H'9046)
009028    2410    mov.b    r1,                @r4
00902a    e601    mov        #H'1,            r6
00902c    2d69    and        r6,                r13
00902e    2e69    and        r6,                r14
009030    2dea    xor        r14,            r13
009032    2dd8    tst        r13,            r13
009034    8904    bt        H'8                        ;@(H'9040)
009036    6557    not        r5,                r5
009038    6340    mov.b    @r4,            r3
00903a    2359    and        r5,                r3
00903c    a003    bra        H'6                        ;@(H'9046)
00903e    2430    mov.b    r3,                @r4
009040    6140    mov.b    @r4,            r1
009042    215b    or        r5,                r1
009044    2410    mov.b    r1,                @r4
009046    7f04    
009048    4f26    lds.l    @r15+,            pr
00904a    6df6    mov.l    @r15+,            r13
00904c    000b    rts
00904e    6ef6    mov.l    @r15+,            r14
;    ----------------    ML_pixel();


0xB401000 only shows up once in the entire addin (at 0x008FC0)
0xB400000 shows up twice. Once at 0x008fbc and second time at 0x020e8e
But I couldn't find any references to the 2nd occurrence
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 12/09/2020 12:21 | #


ML_clear_vram() and ML_pixel() are irrelevant here, they don't use the DD.

You seem to have missed ML_set_contrast() and ML_get_contrast() at 8f9a and 8fa6. I disabled both by removing every access to the display registers, which solves the contrast issue for the title screen only. Still contrast issues everywhere else and every frame is displayed starting at row 4 so 4 rows at the top still display the main menu and 4 rows of Jetpack Joyride are invisible.

There seems to be no reference to the second occurrence indeed.

I have confirmed that the modified ML source works on the Graph 35+E II when compiled with GCC. So it must be specific to the SDK setup or Jetpack itself.
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 12/09/2020 13:24 | # | Fichier joint


Got it to work for no obvious apparent reason after using instruction variants. I don't have time to investigate right now...

---

La version de Jetpack ci-joint est compatible Graph 35+E II. Est-ce que quelqu'un peut faire un test complémentaire avant que Goldsheep l'ajoute à la liste ?
Neyl Hors ligne Membre Points: 23 Défis: 0 Message

Citer : Posté le 12/09/2020 13:31 | #


Je l'ai testé et il fonctionne bien .
Goldsheep Hors ligne Membre Points: 11 Défis: 0 Message

Citer : Posté le 12/09/2020 13:50 | # | Fichier joint


Fonctionne très bien pour moi aussi, y a-t-il un lien vers la page du programme, que je puisse l'ajouter ?
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 12/09/2020 21:38 | #


Par ici : Jetpack Joyride

Si tu veux bien, renomme-le JetpackJ.g1a avant de l'ajouter en fichier joint de ton commentaire. J'ai utilisé des noms différents pendant le test mais maintenant il faut revenir à celui d'origine !
Neyl Hors ligne Membre Points: 23 Défis: 0 Message

Citer : Posté le 13/09/2020 00:27 | #


- 2048 Deluxe
- Pokemon Stadium
Fonctionne Pas Dommage .
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 13/09/2020 02:38 | #


I totally didn't see the ML_set_contrast() and ML_set_contrast()
I recognized that part of the code wasn't from ML_display_vram(), but I just didn't think anything about it
I must have been too tired

I still don't get why changing 008f74 220b or r0, r2 to 008f74 320c add r0, r2 would fix anything
The max r0 could be is 0x3F which when ORed or ADDed with 0xFFFFFF80 should result with 0xFFFFFFBF (0xFFFFFFF with 0xFFFFFC0) which doesn't cause any overflow

I did forget about changing 008f6e 6013 mov r1, r0 to 008f6e e000 mov #h'0, r0.
Which was the reason for the screen not displaying anything on the top 4 rows
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 13/09/2020 08:40 | #


Thanks for your analysis. I also don't see why any of these statements have an effect. mov #0, r0 is the same as mov r1, r0 since r1 is initialized to 0 in the same basic block two instructions above. And as you mentioned, or and and are identical here.

(Actually both modifications result from an attempt from me to count rows from 0x7c up instead of from 0x80 up. In this situation the add makes sense. It worked, but omitted four rows on top, so I put mov #0, r0 again and this time it worked normally. I don't know yet why r1=4 initially.)

Also the flickering on the screen was due to the 4 extra rows at the bottom, I confirmed that setting the limit from 64 to anything smaller than 60 (while keeping the offset problem) solved that part. Maybe that extra RAM is used for other settings or whatever.
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 14/09/2020 11:32 | # | Fichier joint


Lephenixnoir a écrit :
mov #0, r0 is the same as mov r1, r0 since r1 is initialized to 0
r1 was #0, but r1 was changed to #4 to fix the incompatibility
Which caused the offset by 4 bug

And as you mentioned, or and add are identical here
I see now. The add was just left over from your attempted fix

What decompiler and recompiler/hex editor do you use?

Top Left: Original Jetpackj.g1a
Top Right: Fixed Jetpackj.g1a
Bottom Left: Original Fruitnin.g1a
Bottom Right: Fixed Fruitnin.g1a // My attempt at fixing FruitNinja

RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 14/09/2020 11:39 | #


r1 was #0, but r1 was changed to #4 to fix the incompatibility
Which caused the offset by 4 bug

Aaah I got pwned by my own modification of the code and did not even realize it. Thank you for spotting it. xD

Now let's work on automating all of this. I would like to have two levels of compatibility:

• Binary compatibility: for add-ins which provide the source code, rebuild with a compatible version of MonochromeLib (detect GIII by OS version major number = 3) and continue shipping a single binary for all SH4 platforms.
• Binary edition: for add-ins which don't provide the source code, automate the detection of MonochromeLib functions and rewrite them. Ship an additional binary for GIII models only.

Because compiled MonochromeLib functions have references to PC-relative data and the offsets depend on how many MonochromeLib functions are compiled in, it won't be possible to detect a constant byte sequence, and that wouldn't be robust either. I'm considering using my fxos disassembler which does the binary work for us, though it will required some work.

If possible, it would be best to start by porting add-ins that have source code.
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 18/09/2020 00:53 | # | Fichier joint


Heres a pic of what I changed
Left is the original SH4 Wolfenst: Right is my attempted fix

RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 18/09/2020 10:56 | #


Thank you. This still seems to reset the display on my Graph 35+E II (blank screen but no reboot). There doesn't seem to be other direct-display access. Will have to look deeper into this one.
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 18/09/2020 12:33 | # | Fichier joint


Since @Moutaindew asked for doom in Installer et jouer à des jeux de type add-in sur une graph 35+ e II
I very quickly made a (possibly*) compatible Graph 35+eII Wolfenstein 3D Addin: Wolfenst.g1a
Based on the SH4 download (2nd link)

(oops. deleted my post by mistake)
But it was not in vain!
As I take this opportunity to reupload the file (but with modifcation): Wolfenst.g1a
I took a guess as to why it still wasn't working and I think I've found the problem! (It just looks like the possibility of automating this keeps getting harder and harder)
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Kbd2 Hors ligne Membre Points: 125 Défis: 0 Message

Citer : Posté le 19/09/2020 03:14 | #


Terrario is now compatible with the Graph 35+E II
Youtubenosio Hors ligne Membre Points: 13 Défis: 0 Message

Citer : Posté le 19/09/2020 13:14 | #


Hey can someone try to fix FXGnuBoy for the graph 35+ EII please ?
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 21/09/2020 12:06 | #


Your port mostly works now Redcmd, thank you! I checked your file, I see you removed the reg=1, data=1 command which sets increment mode. As we discussed earlier this command is indeed no longer used in the new driver.

I can now start the add-in and play the game, although pressing EXIT during a stage crashes the calculator. I have checked that the crash also occurs with the currently-available SH4 download on my Graph 75+E. This is thus a completely different bug, so your version is indeed a port of the current version for the Graph 35+E II.

I added the file to the game's page with credit. Thanks!

Ajouté le 21/09/2020 à 12:07 :
Also you should be able to test with the Graph 35+E II emulator: https://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?cat=7

This probably will save you some time waiting for me! ^^"
Redcmd En ligne Membre Points: 287 Défis: 5 Message

Citer : Posté le 21/09/2020 12:47 | #


I can confirm the SH4 version crashes my fx-9750GII when exiting the game

Thanks for adding the credit
(BTW I capitalise CMD: RedCMD)
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
Lephenixnoir Hors ligne Administrateur Points: 18426 Défis: 142 Message

Citer : Posté le 21/09/2020 13:37 | #


Youtubenosio a écrit :
Hey can someone try to fix FXGnuBoy for the graph 35+ EII please ?

J'ai contacté l'auteur, c'est un add-in gint donc c'est compatible au même titre que Terrario - il devrait suffire de recompiler le programme avec la version corrigée de gint que j'ai publiée il y a quelques jours.

Redcmd a écrit :
Thanks for adding the credit
(BTW I capitalise CMD: RedCMD)

You're welcome! I adjusted the capitalization.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 42 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd