Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

Using the suggested code to develop a game i realized that a game that works perfectly on vice  , it freeze itself at beginning on the real hardware and in some other emulators.
In this case the game is eligible for the cassette 50  compo?

I used the Shallan code against this emulator (but the problem is in the real hardware too) : https://lvllvl.com/c64/

Loading the generated prg it freeze and looking at the disassembly i see that the execution is in an infinite loop at $E5CD ,:



this is the pure Shallan code converted for cbm studio asm (DASM):

ENTRYM1 = Entry-1           ; Entry point minus one for the stack hacking

        *= $120
Entry
        ldx #$1F            
        txs                 ; Forzatura dello stack pointer per abbassarlo a $100-$11f
                            ; ---------- Codice di partenza (205 bytes fino a $1ec)
                                                            
Loop
        inc $D020
        jmp loop
                            ; ---------- Fine codice di partenza --------------------
        *=$01ED
                            ; Quest’area di memoria può essere usata per le variabili a run time
                            ; Una volta che il programma è caricato (1ed-1ff = 18 bytes)
                            ; è stato sovrascritto dal processo di caricamento

        *= $01F8            ; Sovrascrittura del vettore di ritorno nello stack
        byte <ENTRYM1, >ENTRYM1 ; Stack hacking

        * = $200
            ;143 free bytes here
            byte $8f, 0
        *=$028f
            byte $48,$eb //Prevent keyboard jam
            ;131 free bytes here
            byte $83, 0

        *= $0314            ; Vettori per IRQ, BRK e NMI
        byte $31,$ea,$66,$fe,$47,$fe
                            ; Vanno mantenuti anche i seguenti Vettori
        byte $4a,$f3,$91,$f2,$0e,$f2
        byte $50,$f2,$33,$f3,$57,$f1,$c1,$f1
        byte $ed,$f6        ; vettore di STOP - essenzialmente per evitare JAM nella memoria

                            ; 3286 bytes liberi per tutto ciò che si desidera
        bytes $00 * 3286    ; Riempito di zeri