News: 11 March 2016 - Forum Rules

Author Topic: Help with this code  (Read 1062 times)

Dracula X

  • Full Member
  • ***
  • Posts: 168
    • View Profile
    • My YouTube Page for ROM hacking
Help with this code
« on: April 18, 2022, 10:10:29 am »
This code is from The Guardian Legend:
This is also Compact Mapper hack and my MMC5 hack.

I'm trying to put this code in bank 08, but it's not working, a little

Original code from ASM fixed bank:
Code: [Select]
__ef55:     .hex 20 21 21 22   ; $ef55: 20 21 21 22   Data Corridor Graphics
            .hex 22 23 23 24   ; $ef59: 22 23 23 24   Data
            .hex 24 26 26 21   ; $ef5d: 24 26 26 21   Data
            .hex 21 22 22 23   ; $ef61: 21 22 22 23   Data
            .hex 23 24 24 25   ; $ef65: 23 24 24 25   Data
            .hex 25 25 20      ; $ef69: 25 25 20      Data

;-------------------------------------------------------------------------------
__ef6c:     jsr __eecc         ; $ef6c: 20 cc ee 
            lda #$01           ; $ef6f: a9 01     
            jsr $8000          ; $ef71: 20 00 80 
            ldy $51            ; $ef74: a4 51     
            lda __ef55,y       ; $ef76: b9 55 ef  Corridor Graphics
            sta $5c            ; $ef79: 85 5c     
            jsr $8000          ; $ef7b: 20 00 80 
            jsr __d7c3         ; $ef7e: 20 c3 d7 
            jsr $8036          ; $ef81: 20 36 80 
            ldy #$06           ; $ef84: a0 06     
__ef86:     lda $016f,y        ; $ef86: b9 6f 01 
            sta $04b8,y        ; $ef89: 99 b8 04 
            dey                ; $ef8c: 88       
            bne __ef86         ; $ef8d: d0 f7     
            lda $47            ; $ef8f: a5 47     
            sta $78            ; $ef91: 85 78     
            lda $30            ; $ef93: a5 30     
            and #$9f           ; $ef95: 29 9f     
            ora #$50           ; $ef97: 09 50     
            sta $30            ; $ef99: 85 30     
            jsr __d718         ; $ef9b: 20 18 d7 
            lda $51            ; $ef9e: a5 51     
            jsr $8000          ; $efa0: 20 00 80 
            jsr __e560         ; $efa3: 20 60 e5 
            jsr __e5bd         ; $efa6: 20 bd e5 
            jmp __d71c         ; $efa9: 4c 1c d7

New Code:
Code: [Select]
__ef55:     .hex 20 21 21 22   ; $ef55: 20 21 21 22   Data
            .hex 22 23 23 24   ; $ef59: 22 23 23 24   Data
            .hex 24 26 26 21   ; $ef5d: 24 26 26 21   Data
            .hex 21 22 22 23   ; $ef61: 21 22 22 23   Data
            .hex 23 24 24 25   ; $ef65: 23 24 24 25   Data
            .hex 25 25 20      ; $ef69: 25 25 20      Data

;-------------------------------------------------------------------------------
__ef6c:     jsr __eecc         ; $ef6c: 20 cc ee 
            lda #$01           ; $ef6f: a9 01     
            jsr $8000          ; $ef71: 20 00 80 
            jsr bank08
    jmp __ef74_bank08
    .org $ef7b
            jsr $8000          ; $ef7b: 20 00 80
            jsr __d7c3         ; $ef7e: 20 c3 d7 
            jsr $8036          ; $ef81: 20 36 80 
            ldy #$06           ; $ef84: a0 06     
__ef86:     lda $016f,y        ; $ef86: b9 6f 01 
            sta $04b8,y        ; $ef89: 99 b8 04 
            dey                ; $ef8c: 88       
            bne __ef86         ; $ef8d: d0 f7     
            lda $47            ; $ef8f: a5 47     
            sta $78            ; $ef91: 85 78     
            lda $30            ; $ef93: a5 30     
            and #$9f           ; $ef95: 29 9f     
            ora #$50           ; $ef97: 09 50     
            sta $30            ; $ef99: 85 30     
            jsr __d718         ; $ef9b: 20 18 d7 
            lda $51            ; $ef9e: a5 51     
            jsr $8000          ; $efa0: 20 00 80 
            jsr __e560         ; $efa3: 20 60 e5 
            jsr __e5bd         ; $efa6: 20 bd e5 
            jmp __d71c         ; $efa9: 4c 1c d7

Code for bank 08:
Code: [Select]
;-------------------------------------------------------------------------------
__ef74_bank08:
            ldy $51            ; $ef74: a4 51     
            lda __ef55_2,y       ; $ef76: b9 55 ef 
            sta $5c            ; $ef79: 85 5c
    jsr $8000
    jmp $ef86


__ef55_2:     .hex 20 21 21 22   ; $ef55: 20 21 21 22   Data
            .hex 22 23 23 24   ; $ef59: 22 23 23 24   Data
            .hex 24 26 26 21   ; $ef5d: 24 26 26 21   Data
            .hex 21 22 22 23   ; $ef61: 21 22 22 23   Data
            .hex 23 24 24 25   ; $ef65: 23 24 24 25   Data
            .hex 25 25 20      ; $ef69: 25 25 20      Data
    .hex 20 21 21 22   ; $ef55: 20 21 21 22   Data
            .hex 22 23 23 24   ; $ef59: 22 23 23 24   Data
            .hex 24 26 26 21   ; $ef5d: 24 26 26 21   Data
            .hex 21 22 22 23   ; $ef61: 21 22 22 23   Data
            .hex 23 24 24 25   ; $ef65: 23 24 24 25   Data
            .hex 25 25 20      ; $ef69: 25 25 20      Data

I don't know what I'm ding wrong.
« Last Edit: April 18, 2022, 10:38:08 am by Dracula X »
Back to Thunder Force II hacking again.

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 895
  • I am the baldest romhacker
    • View Profile
Re: Help with this code
« Reply #1 on: April 18, 2022, 01:07:19 pm »
What is not working exactly?

What jsr bank08 does?

Where __ef74_bank08 is located?

What is current mmc5 prg mode?

Do you restore banks back to original when you're done?

Dracula X

  • Full Member
  • ***
  • Posts: 168
    • View Profile
    • My YouTube Page for ROM hacking
Re: Help with this code
« Reply #2 on: April 18, 2022, 05:07:54 pm »
1. Showing the correct graphics for Corridors:
here is the video: https://www.youtube.com/watch?v=XIICrzncZqc

2. select to bank 08:
Code: [Select]
__d705:     lda #$00           ; $d705: a9 00     
__d707:     sty $9e            ; $d707: 84 9e     
            sta $04            ; $d709: 85 04     
            tay                ; $d70b: a8       
            ora #$80           ; $d70c: 09 80     
            jsr bankswitch       ; $d70e: 99 66 d7 
            ldy $9e            ; $d711: a4 9e     
            rts                ; $d713: 60       

;-------------------------------------------------------------------------------
__d714:     lda #$03           ; $d714: a9 03     
            bne __d707         ; $d716: d0 ef     
__d718:     lda #$04           ; $d718: a9 04     
            bne __d707         ; $d71a: d0 eb     
__d71c:     lda #$05           ; $d71c: a9 05     
            bne __d707         ; $d71e: d0 e7     
__d720:     lda #$06           ; $d720: a9 06     
            bne __d707         ; $d722: d0 e3     
bank07:     lda #$07           ; $d71c: a9 05     
            bne __d707         ; $d71e: d0 e7
bank00:     lda #$00           ; $d720: a9 06     
            bne __d707         ; $d722: d0 e3
bank01:     lda #$01           ; $d71c: a9 05     
            bne __d707         ; $d71e: d0 e7     
bank02:     lda #$02           ; $d720: a9 06
    bne __d707
bank08:     lda #$08           ; $d720: a9 06     
            bne __d707         ; $d722: d0 e3
bank09:     lda #$09           ; $d71c: a9 05     
            bne __d707         ; $d71e: d0 e7     
bank0A:     lda #$0a           ; $d720: a9 06     
            bne __d707         ; $d722: d0 e3





    .org $d766

I make the code like this:
Code: [Select]
jsr bank08
jmp $8062

Instead of this:
Code: [Select]
lda #$08
jsr $FFC0
jmp $8062

3. __ef74_bank08 is located at $8062

4. prg mode 01

5. I did, but I think I did it wrong.
Code: [Select]
__ecb1_bank08:
            ldy $51            ; $ecb1: a4 51     
            lda __ef2a_2,y       ; $ecb3: b9 2a ef 
            sta $5c         ; $ecb6: 20 52 d8
    lda #$ec
    pha
    lda #$b6
    pha
    jmp $d720

Or this way:
Code: [Select]
ldy $51            ; $ecb1: a4 51     
lda __ef2a_2,y       ; $ecb3: b9 2a ef 
sta $5c         ; $ecb6: 20 52 d8
jmp $ecb6
« Last Edit: April 21, 2022, 04:29:12 pm by Dracula X »
Back to Thunder Force II hacking again.

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 895
  • I am the baldest romhacker
    • View Profile
Re: Help with this code
« Reply #3 on: April 18, 2022, 06:42:10 pm »
Quote
3. __ef74_bank08 is located at $8062

Considering the game is not freezing or anything, for now the only possible problem I see is this

Code: [Select]
            jsr bank08
            jmp __ef74_bank08

__ef74_bank08:
            ldy $51
            lda __ef55_2,y
            sta $5c
    jsr $8000 ; <<-- here

Going to 8000 before restoring banks. That is if you didn't copy whatever it was in original 8000 location into your new bank 08.

Dracula X

  • Full Member
  • ***
  • Posts: 168
    • View Profile
    • My YouTube Page for ROM hacking
Re: Help with this code
« Reply #4 on: April 19, 2022, 08:51:11 am »
Sorry for taking too long to reply!

That's the part of the code. I tried everything else and still failed!

Before I give up, is there's a way for me to swap this type of code to another bank?
Code: [Select]
__ef55:     .hex 20 21 21 22   ; $ef55: 20 21 21 22   Data Corridor Graphics
            .hex 22 23 23 24   ; $ef59: 22 23 23 24   Data
            .hex 24 26 26 21   ; $ef5d: 24 26 26 21   Data
            .hex 21 22 22 23   ; $ef61: 21 22 22 23   Data
            .hex 23 24 24 25   ; $ef65: 23 24 24 25   Data
            .hex 25 25 20      ; $ef69: 25 25 20      Data

Thanks!
Back to Thunder Force II hacking again.

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 895
  • I am the baldest romhacker
    • View Profile
Re: Help with this code
« Reply #5 on: April 19, 2022, 09:35:21 am »
If you restore banks in the right place like I told you in my last post, it should work.

Dracula X

  • Full Member
  • ***
  • Posts: 168
    • View Profile
    • My YouTube Page for ROM hacking
Re: Help with this code
« Reply #6 on: April 21, 2022, 04:21:03 pm »
Thanks for trying to help!

I have another question:

How do I switch banks from $8000-$bfff to another $8000-$bfff?
I'm trying to transfer the code from bank 3 to bank A to test it. I just found out that I can't do it like this:

Original code from bank 3:
Code: [Select]
__913a:     .hex 88 88 88 88   ; $913a: 88 88 88 88   Data
            .hex 88 88 88 02   ; $913e: 88 88 88 02   Data
            .hex 88 88 88 88   ; $9142: 88 88 88 88   Data
            .hex 88 88 88 88   ; $9146: 88 88 88 88   Data
            .hex 88 02 88 88   ; $914a: 88 02 88 88   Data
            .hex 88 00 00      ; $914e: 88 00 00      Data

__91a0:     bit $30            ; $91a0: 24 30     
            bvc __91c8         ; $91a2: 50 24     
            ldy #$05           ; $91a4: a0 05     
            sec                ; $91a6: 38       
__91a7:     lda $0170,y        ; $91a7: b9 70 01 
            sbc $04b9,y        ; $91aa: f9 b9 04 
            bcs __91b2         ; $91ad: b0 03     
            adc #$0a           ; $91af: 69 0a     
            clc                ; $91b1: 18       
__91b2:     sta $04b9,y        ; $91b2: 99 b9 04 
            dey                ; $91b5: 88       
            bpl __91a7         ; $91b6: 10 ef     
            ldy $51            ; $91b8: a4 51     
            lda __913a,y       ; $91ba: b9 3a 91 
            sta $71            ; $91bd: 85 71     
            cpy #$15           ; $91bf: c0 15     
            beq __91d2         ; $91c1: f0 0f     
            lda __9151,y       ; $91c3: b9 51 91 
            sta $72            ; $91c6: 85 72     
__91c8:     lda #$40           ; $91c8: a9 40     
            sta $0300          ; $91ca: 8d 00 03 
            lda #$45           ; $91cd: a9 45     
            jsr $c030         ; $91cf: 20 30 c0 
__91d2:     lda #$00           ; $91d2: a9 00     
            sta $73            ; $91d4: 85 73     
            sta $74            ; $91d6: 85 74     
            lda $71            ; $91d8: a5 71     
            bpl __920a         ; $91da: 10 2e     
            ldx #$00           ; $91dc: a2 00     
            ldy #$05           ; $91de: a0 05     
__91e0:     lda $0500,y        ; $91e0: b9 00 05 
            beq __91fd         ; $91e3: f0 18     
            and #$7f           ; $91e5: 29 7f     
            cmp #$29           ; $91e7: c9 29     
            beq __91f2         ; $91e9: f0 07     
            lda $0578,y        ; $91eb: b9 78 05 
            and #$02           ; $91ee: 29 02     
            bne __91fd         ; $91f0: d0 0b     
__91f2:     inx                ; $91f2: e8       
            lda #$00           ; $91f3: a9 00     
            sta $0740,y        ; $91f5: 99 40 07 
            lda #$08           ; $91f8: a9 08     
            sta $0500,y        ; $91fa: 99 00 05 
__91fd:     iny                ; $91fd: c8       
            cpy #$18           ; $91fe: c0 18     
            bne __91e0         ; $9200: d0 de     
            txa                ; $9202: 8a       
            beq __920a         ; $9203: f0 05     
            lda #$22           ; $9205: a9 22     
            jsr $c030         ; $9207: 20 30 c0 
__920a:     lda $71            ; $920a: a5 71     
            and #$08           ; $920c: 29 08     
            sta $10            ; $920e: 85 10     
            lda $60            ; $9210: a5 60     
            ora $10            ; $9212: 05 10     
            sta $60            ; $9214: 85 60     
            inc $70            ; $9216: e6 70     
__9218:     bit $30            ; $9218: 24 30     
            bvc __924b         ; $921a: 50 2f     
            lda $51            ; $921c: a5 51     
            cmp #$15           ; $921e: c9 15     
            beq __9246         ; $9220: f0 24     
            inc $73            ; $9222: e6 73     
            bne __9228         ; $9224: d0 02     
            inc $74            ; $9226: e6 74     
__9228:     lda $73            ; $9228: a5 73     
            and #$3f           ; $922a: 29 3f     
            beq __922f         ; $922c: f0 01     
            rts                ; $922e: 60

New code from bank 3:
Code: [Select]
__913a:     .hex 88 88 88 88   ; $913a: 88 88 88 88   Data
            .hex 88 88 88 02   ; $913e: 88 88 88 02   Data
            .hex 88 88 88 88   ; $9142: 88 88 88 88   Data
            .hex 88 88 88 88   ; $9146: 88 88 88 88   Data
            .hex 88 02 88 88   ; $914a: 88 02 88 88   Data
            .hex 88 00 00      ; $914e: 88 00 00      Data

__91a0:     bit $30            ; $91a0: 24 30     
            bvc __91c8         ; $91a2: 50 24     
            ldy #$05           ; $91a4: a0 05     
            sec                ; $91a6: 38       
__91a7:     lda $0170,y        ; $91a7: b9 70 01 
            sbc $04b9,y        ; $91aa: f9 b9 04 
            bcs __91b2         ; $91ad: b0 03     
            adc #$0a           ; $91af: 69 0a     
            clc                ; $91b1: 18       
__91b2:     sta $04b9,y        ; $91b2: 99 b9 04 
            dey                ; $91b5: 88       
            bpl __91a7         ; $91b6: 10 ef     
            jsr $d73c ; bank A
    jsr $8000
   
    .org $91bf
            cpy #$15           ; $91bf: c0 15     
            beq __91d2         ; $91c1: f0 0f     
            lda __9151,y       ; $91c3: b9 51 91 
            sta $72            ; $91c6: 85 72     
__91c8:     lda #$40           ; $91c8: a9 40     
            sta $0300          ; $91ca: 8d 00 03 
            lda #$45           ; $91cd: a9 45     
            jsr $c030         ; $91cf: 20 30 c0 
__91d2:     lda #$00           ; $91d2: a9 00     
            sta $73            ; $91d4: 85 73     
            sta $74            ; $91d6: 85 74     
            lda $71            ; $91d8: a5 71     
            bpl __920a         ; $91da: 10 2e     
            ldx #$00           ; $91dc: a2 00     
            ldy #$05           ; $91de: a0 05     
__91e0:     lda $0500,y        ; $91e0: b9 00 05 
            beq __91fd         ; $91e3: f0 18     
            and #$7f           ; $91e5: 29 7f     
            cmp #$29           ; $91e7: c9 29     
            beq __91f2         ; $91e9: f0 07     
            lda $0578,y        ; $91eb: b9 78 05 
            and #$02           ; $91ee: 29 02     
            bne __91fd         ; $91f0: d0 0b     
__91f2:     inx                ; $91f2: e8       
            lda #$00           ; $91f3: a9 00     
            sta $0740,y        ; $91f5: 99 40 07 
            lda #$08           ; $91f8: a9 08     
            sta $0500,y        ; $91fa: 99 00 05 
__91fd:     iny                ; $91fd: c8       
            cpy #$18           ; $91fe: c0 18     
            bne __91e0         ; $9200: d0 de     
            txa                ; $9202: 8a       
            beq __920a         ; $9203: f0 05     
            lda #$22           ; $9205: a9 22     
            jsr $c030         ; $9207: 20 30 c0 
__920a:     lda $71            ; $920a: a5 71     
            and #$08           ; $920c: 29 08     
            sta $10            ; $920e: 85 10     
            lda $60            ; $9210: a5 60     
            ora $10            ; $9212: 05 10     
            sta $60            ; $9214: 85 60     
            inc $70            ; $9216: e6 70     
__9218:     bit $30            ; $9218: 24 30     
            bvc __924b         ; $921a: 50 2f     
            lda $51            ; $921c: a5 51     
            cmp #$15           ; $921e: c9 15     
            beq __9246         ; $9220: f0 24     
            inc $73            ; $9222: e6 73     
            bne __9228         ; $9224: d0 02     
            inc $74            ; $9226: e6 74     
__9228:     lda $73            ; $9228: a5 73     
            and #$3f           ; $922a: 29 3f     
            beq __922f         ; $922c: f0 01     
            rts                ; $922e: 60

Bank A:
Code: [Select]
;----------------------------------------------------------------
; program bank $A
;----------------------------------------------------------------

.base $8000


test2:
ldy $51            ; $91b8: a4 51     
            lda __913a_2,y       ; $91ba: b9 3a 91 
            sta $71            ; $91bd: 85 71
    jsr __d714
    jmp $91bd


__913a_2:     .hex 88 88 88 88   ; $913a: 88 88 88 88   Data ;Corridor Stuff
            .hex 88 88 88 02   ; $913e: 88 88 88 02   Data
            .hex 88 88 88 88   ; $9142: 88 88 88 88   Data
            .hex 88 88 88 88   ; $9146: 88 88 88 88   Data
            .hex 88 02 88 88   ; $914a: 88 02 88 88   Data
            .hex 88 00 00      ; $914e: 88 00 00      Data

.org $c000
« Last Edit: April 21, 2022, 04:55:19 pm by Dracula X »
Back to Thunder Force II hacking again.

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 895
  • I am the baldest romhacker
    • View Profile
Re: Help with this code
« Reply #7 on: April 22, 2022, 02:54:54 am »
Here is how you do this properly.

Code: [Select]
; somewhere in 8000-BFFF, bank 3
JSR to a bankswitching routine in a fixed bank

; somewhere in 8000-BFFF, bank A
RTS

; somewhere in C000-FFFF, fixed bank
; saving & restoring AXY regs may be needed
JSR switch to bank A
JSR to RTS in bank A
JSR switch to bank 3
+ original code from bank 3 that was replaced with your JSR
RTS

If you do this and nothing breaks, then you can try more complex things like transfering stuff to another bank, instead of RTS back right away.
« Last Edit: April 22, 2022, 10:49:01 pm by Cyneprepou4uk »

Dracula X

  • Full Member
  • ***
  • Posts: 168
    • View Profile
    • My YouTube Page for ROM hacking
Re: Help with this code
« Reply #8 on: April 22, 2022, 10:55:00 pm »
OMG! Thank you so much! ;D
Back to Thunder Force II hacking again.