Multicolor Chocobos
#1
This patch is inspired by Tenkarider in his Curse of the Gods mod.

Multicolor Chocobos has 4 different chocobo types:
Yellow: Normal chocobo
Red: Mountain chocobo
Blue: Water chocobo
Purple: "Flying" chocobo (sadly he does not fly, but can move everywhere)

To activate different chocobo types we use event bits $0E8 and $0E9.
Both are cleared for the normal chocobo,
$0E8 is set for red chocobo,
$0E9 is set for blue chocobo
Both are set for the purple chocobo

The basic patch implements only palette swapping and improved movement based on event bits $0E8 and $0E9. You need to set these bits yourself (in events) to allow the player access to new chocobos.

But, for fun we have the example IPS file to try this out.

The example IPS file will start a new game outside the WoB chocobo stables. You can head north enter the stables and the chocobo caretaker will allow you to pick any of the 4 chocobos you want.

Indepth:
Code:
# Chocobo Palettes
@ 14F900:

        # Normal Chocobo Palette (yellow)
        AD 35 63 0C 00 00 7F 03         00 00 0E 11 BC 2E 9F 4B
        1B 02 39 67 FF 7F 92 21         1D 26 DF 57 DF 73 E3 6C

        # Mountain Chocobo Palette (red)
        1F 00 1F 00 1F 00 1F 00         1F 00 1F 00 1F 00 1F 00
        1F 00 1F 00 1F 00 1F 00         1F 00 1F 00 1F 00 1F 00

        # Water Chocobo Palette (blue)
        00 7C 00 7C 00 7C 00 7C         00 7C 00 7C 00 7C 00 7C
        00 7C 00 7C 00 7C 00 7C         00 7C 00 7C 00 7C 00 7C

        # "Flying" Chocobo Palette (purple)
        1F 7C 1F 7C 1F 7C 1F 7C         1F 7C 1F 7C 1F 7C 1F 7C
        1F 7C 1F 7C 1F 7C 1F 7C         1F 7C 1F 7C 1F 7C 1F 7C

# MODE7: Chocobo Palette Hack
@ 2E89B6:
        4C 01 AF        # JMP $AF01

@ 2EB101:
        C2 20           # REP #$20      (16-bit A)
        AD 9D 1E        # LDA $1E9D
        29 03 00        # AND #$0003
        0A              # ASL A
        0A              # ASL A
        0A              # ASL A
        0A              # ASL A
        0A              # ASL A
        AA              # TAX

        A0 00 00        # LDY #$0000     (Zero Y) ($00...)
        BF 00 F7 D4     # LDA $D4F700,X  (Chocobo color palettes)
        99 20 E1        # STA $E120,Y    (Save in RAM)
        E8              # INX
        E8              # INX            (Point to next color in RAM)
        C8              # INY
        C8              # INY            (Point to next color in RAM)
        C0 20 00        # CPY #$0020     (Copied 16 colors?)
        D0 F0           # BNE -          (Loop if not)


        AB              # PLB            (Restore data bank)
        E2 20           # SEP #$20       (8-bit A)
        AF 06 B2 EE     # LDA $EEB206    (Pointer to sky graphics, low byte)
        85 D2           # STA $D2        (Set source for decompression, low byte)
        AF 07 B2 EE     # LDA $EEB207    (Pointer to sky graphics, middle byte)
        85 D3           # STA $D3        (Set source for decompression, middle byte)
        AF 08 B2 EE     # LDA $EEB208    (Pointer to sky graphics, high byte)
        85 D4           # STA $D4        (Set source for decompression, high byte)

        4C CB 87        # JMP $87CB

# Improved Movement for different color chocobos
@ 2E1D51:
                4C 01 B0        # JMP $B001
                EA EA EA EA
                EA EA EA


# Free space used at $EEB001:
@ 2EB201:
                C2 20           # REP #$20      (16-bit A)
                AD 9D 1E        # LDA $1E9D     (chocobo type from event bits)
                29 03 00        # AND #$03      (isolate bits)
                85 1A           # STA $1A       (store to use with X later)

                C2 10           # REP #$10       (16-bit indexes)
                20 B5 1C        # JSR $1CB5      (Tile properties)
                89 01 00        # BIT #$0001     (Impassable for chocobos?)
                D0 03           # BEQ $1B61      (Branch if not) (LSR A, BCC...)
                4C 61 1B        # JMP $1B61     (exit)

                E2 10           # SEP #$10       (8-bit indexes)

                29 0C 00        # AND #$000C    (shadow cast by airship)

                A6 1A           # LDX $1A       (chocobo type)

                E0 00           # CPX #$0000    (normal chocobo)
                D0 03           # BNE +03       (not normal chocobo)
                4C 5B 1B        # JMP $1B5B     (prevent movement)

                CA              # DEX           (mountain chocobo)
                D0 08           # BNE +08       (not mountain chocobo)
                C9 04 00        # CMP #$0008    (test for large airship shadow)
                10 03           # BPL +03       (it's ok, mountain choco on a mountain)
                4C 5B 1B        # JMP $1B5B     (prevent movement)

                CA              # DEX           (water chocobo)
                D0 08           # BNE +08       (not water chocobo)
                C9 00 00        # CMP #$0000    (test for small airship shadow)
                F0 03           # BPL +03       (it's ok, water choco in the water)
                4C 5B 1B        # JMP $1B5B     (prevent movement)

                4C 61 1B        # JMP $1B61     (exit)

# Improve Dismount
@ 2E9572:
                4C 01 B1        # JMP $B101
                EA EA EA        # NOP

# Free space used at $EEB101
@ 2EB301:
                A5 20           # LDA $20        (Map mode)
                C9 02           # CMP #$02       (Chocobo mode?)
                F0 03           # BEQ +03        (Branch if so)
                4C 78 93        # JMP $9378      (return to other modes)

                A5 C2           # LDA $C2        (Tile properties, low byte)
                89 01           # BIT #$01       (Impassable for chocobos?)
                F0 03           # BEQ +03        (Branch if not)

                4C 2C 94        # JMP $942C      (exit)
                4C D4 93        # JMP $93D4      (normal dismount)

Code added for the example IPS:
Code:
# Text: Chocobo Bill
@ 0D9CF3:
        15 7F 38 3E 45 45 48 50 01      # > Yellow
        15 7F 31 3E 3D 01               # > Red
        15 7F 21 45 4E 3E 01            # > Blue
        15 7F 2F 4E 4B 49 45 3E         # > Purple
        00

# NPC Event: Chocobo Bill
@ 0C3504:
        4B A7 83                        # Choice dialogue
        97                              # fade to black
        B6
                3D 33 02                # Picked Yellow
                45 33 02                # Picked Red
                4D 33 02                # Picked Blue
                55 33 02                # Picked Green
        FE

@ 0C353D:

        D1 E8           # Picked Yellow
        D1 E9
        B2 83 33 02

        D0 E8           # Picked Red
        D1 E9
        B2 83 33 02

        D1 E8           # Picked Blue
        D0 E9
        B2 83 33 02

        D0 E8           # Picked Purple
        D0 E9
        B2 83 33 02

        FE

# Event: Intro
@ 0C9A5B:
                6B 00 24 36 56 00
                FF

# Event: New game stuff
@ 0A6033:       A9                      # Show title screen

                7F 00 00                # NAME 00 -> 00
                40 00 00                # Set properties
                3D 00                   # Create Character
                3F 00 01                # Assign char to party
                37 00 00                # sprites for char 00
                43 00 00                # palette for char 00

                7F 01 01                # NAME 01 -> 01
                40 01 01                # Set properties
                3D 01                   # Create Character
                3F 01 01                # Assign char to party
                37 01 01                # sprites for char 01
                43 01 01                # palette for char 01

                D4 E0                   # Event bit 20E (on)
                D4 F0                   # Event bit 20F (on)
                3C 00 01 FF FF          # Set party
                46 01                   # Select party 1
                D2 0B                   # Event bit 10B (on)
                D2 E3                   # Event bit 1E3 (on)

                6C 00 00 75 3D 00       # Start location in WoB

                82 88 5E                # Subroutine new game/loading
                FE

The patches are for a headered ROM.
Reply


Messages In This Thread
Multicolor Chocobos - by m06 - 07-28-2015, 08:29 PM
RE: Multicolor Chocobos - by madsiur - 07-28-2015, 08:33 PM
RE: Multicolor Chocobos - by m06 - 07-28-2015, 08:49 PM
RE: Multicolor Chocobos - by Tenkarider - 07-29-2015, 04:48 AM
RE: Multicolor Chocobos - by m06 - 07-29-2015, 01:51 PM
RE: Multicolor Chocobos - by JWhiteLXXXIX - 07-29-2015, 05:11 PM
RE: Multicolor Chocobos - by Tenkarider - 07-29-2015, 07:37 PM
RE: Multicolor Chocobos - by Gi Nattak - 07-29-2015, 08:19 PM
RE: Multicolor Chocobos - by m06 - 07-30-2015, 06:08 AM
RE: Multicolor Chocobos - by madsiur - 07-30-2015, 04:38 PM
RE: Multicolor Chocobos - by Tenkarider - 07-30-2015, 08:38 PM
RE: Multicolor Chocobos - by madsiur - 07-30-2015, 08:51 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)