пятница, 10 июля 2009 г.

Intro на Snes

Вот, решил сделать подарок переводчикам.
Думаю, каждый хочет, чтобы его перевод украшал своё интро, так, для выпендрёжа.
Вот вам моя заготовка, надеюсь, вы знаете хоть немного архитектуру Snes, чтобы указать адрес изображения, которая будет показываться при запуске рома.

ВНИМАНИЕ!!! WARNING!!!
ЭТОТ КОД ТОЛЬКО ДЛЯ МАППЕРА HIROM!!!


Для начала:
1. увеличите ром, хотя бы на $8000 байт (64кб)
2. создайте там рисунок, 32х28 тайла (в каждом тайле 8 пикселей, значит надо картинку с разрешением 256х224 пикселя – это стандартное разрешение Snes )
3. Открываем дебаг (я использую «snes9x1.43.ep9r8»), смотрим откуда начинается загружаться ром. В основном идет так:
SEI
CLC
XCE
JMP $xx:xxxx


4. JMP $указываем на чистое место
Ставим JSR ($22) и указываем адрес, откуда начинается код ассемблера.
После вашего адреса ставим JMP, который вы заменили в оригинале (чтобы после интро грузилась игра, а не чёрный экран).
Интересное:
JMP – перепрыгивает на новое место и продолжает код от туда.
JSR – перепрыгивает на новое место, и после того как кончается код, он возвращается.

Код добавил комментарием, а то много места занимает

3 комментария:

  1. Код ассеблера(вставляем в пустое место в роме):
    SEP #$20
    REP #$10
    LDA #$8F
    STA $2100
    STZ $210D
    STZ $210D
    STZ $210E
    STZ $210E
    LDA #$01
    STA $2105
    LDA #$02
    STA $210B
    LDA #$10
    STA $2107
    LDA #$80
    STA $2115
    LDA #$00
    STA $2121
    STA $2121
    LDA #$00
    STA $2122
    LDA #$00
    STA $2122
    LDA #$1F
    STA $2122
    LDA #$00
    STA $2122
    LDA #$00
    STA $2122
    LDA #$70
    STA $2122
    LDA #$FF
    STA $2122
    LDA #$7F
    STA $2122
    LDA #$0D
    STA $2122
    LDA #$78
    STA $2122
    REP #$20
    LDA #$2000
    STA $2116
    LDX #$0000
    LDY #$A000
    LDA $адрес изображения(,х не удалять),x
    STA $2118
    INX
    INX
    DEY
    CPY #$0000
    BNE $F1
    LDA #$1000
    STA $2116
    LDY #$1000
    LDA #$0000
    STA $2118
    INC A
    DEY
    CPY #$0000
    BNE $F6
    SEP #$20
    LDA #$01
    STA $212C
    LDA #$00
    JSR $00F5
    STA $2100
    LDX #$9FFF
    DEX
    CPX #$0000
    BNE $FA
    INC A
    CMP #$10
    BNE $EC
    LDA #$01
    STA $4200
    LDA #$10
    STA $36
    JSR $00F5
    LDA $4212
    AND #$01
    BNE $F9
    LDA $4219
    AND #$10
    BNE $02
    BRA $F0
    LDA #$0F
    LDA #$00
    STA $30
    LDA #$03
    STA $30
    STA $2106
    JSR $00F5
    LDA $30
    STA $2106
    LDX #$7FFF
    DEX
    CPX #$0000
    BNE $FA
    CLC
    ADC #$10
    CMP #$03
    BNE $ED
    RTL
    PHA
    LDA $4212
    AND #$80
    BNE $F9
    PLA
    RTS

    ОтветитьУдалить
  2. Марат:
    Имхо, но неплохо было бы комментарии добавить возле каждой команды. А то не сразу понятно почему нет загрузки карты тайлов. Да и палитру считай надо свою в код вписывать, но про палитру ничего не сказано.

    ОтветитьУдалить
  3. Эм, здесь нет палитры, карты тайлов тоже нет, просто идет рисунком, который сделан в роме, я собираюсь палитру добавить, позже сделаю, и откомментирую

    ОтветитьУдалить