Честно говоря, Принц мне поднадоел пока я его делал для БК, наконец-то можно заняться другими играми )
Вид для печати
Честно говоря, Принц мне поднадоел пока я его делал для БК, наконец-то можно заняться другими играми )
А где можно взять доку по этой машине, где описывалась бы организация памяти/видеопамяти и т.д.?
Спасибо, поизучаю.
Прямо произвела на меня впечатление демка от Libor Lasota. Не ожидал, что Принц будет настолько круто выглядеть при однобитной графике. Снова полез в исходники оригинальной игры, чтобы поизучать их и прикинуть что к чему. Начать изучение думал с вывода оригинальной заставки. Задача довольно простая, плюс можно будет понять насколько сложно преобразовывать код написанный для одного процессора под другой. И тут же встал в тупик...
Начало:
Допустим, находим процедуру TitleScreen:Код:*-------------------------------
*
* A T T R A C T
*
* Self-running "attract mode"
*
*-------------------------------
ATTRACTMODE
AttractLoop
lda #1
sta musicon
jsr SetupDHires
jsr PubCredit
jsr AuthorCredit
jsr TitleScreen
jsr Prolog1
]princess
jsr PrincessScene
jsr SetupDHires
jsr Prolog2
jsr SilentTitle
jmp Demo
И теперь ищем процедуру DeltaExpPop. И находим только такое:Код:TitleScreen
lda #38
jsr tpause
* Unpack title onto page 1
lda #delTitle
jsr DeltaExpPop
ldx #140
lda #s_Title
jsr PlaySongI
* Credit line disappears
jmp CleanScreen
Не понимаю как эта таблица переходов работает и где по итогу расположены все эти процедуры?Код:*-------------------------------
*
* Jump tables
*
*-------------------------------
...
SngExpand ds 3
DblExpand ds 3
DeltaExpPop ds 3
_inverty ds 3
DeltaExpWipe ds 3
...
Да, я находил процедуры, озаглавленные капсом. Но я всё равно не понимаю как это работает.
Видимо, таблица переходов ссылается вот на этот блок:
Код:*-------------------------------
*
* Sits in main l.c. bank 2
*
*-------------------------------
org org
jmp SNGEXPAND
jmp DBLEXPAND
jmp DELTAEXPPOP
jmp INVERTY
jmp DELTAEXPWIPE
jmp PURPLE
jmp PROMPT
jmp BLACKOUT
jmp CLR
jmp TEXT
jmp SETDHIRES
jmp FADEIN
jmp LOADSUPER
jmp FADEOUT
Дальше надо с логикой разбираться. В принципе, команды немного знакомы - как-то писал программу под Агат (а там вроде тот же проц), но ДАВНО это было, так что только общая логика понятно, но не детали