Вот на Sam Coupe, с финалом: https://youtu.be/pu4utj0eZ9k
на MSX есть демо-версия 2007 года: https://www.youtube.com/watch?v=29X12K4Sy5M
Вид для печати
Вот на Sam Coupe, с финалом: https://youtu.be/pu4utj0eZ9k
на MSX есть демо-версия 2007 года: https://www.youtube.com/watch?v=29X12K4Sy5M
Ранее никогда не сталкивался с 6502 и вот сейчас бегло посмотрел систему команд процессора 6502, и мне показалось, что там чуть ли не в лоб можно конвертировать текст программы в i8080/Z80. Или это заблуждение? Но ведь Alone Coder как-то перенёс Super Mario Bros. с NES на ATM, используя оригинальный код с 6502.
Эта ссылка уже была
- - - Добавлено - - -
Для V9990
посмотри в комплекте с Tasm`ом https://vtrd.in/system/TASM_412.ZIP 6502 конвертор
Похоже, что пытались портировать со SNES. Я проходил SNES'овскую версию, причём на настоящей японской SNES в год выхода игры (1992). Считаю, что это лучший Принц Персии среди всех платформ и версий. Там даже лабиринты расширены по сравнению с оригинальной игрой. Ну и графика со звуком выгодно отличаются от всех остальных версий.
https://www.youtube.com/watch?v=0q_6tOpnquI
https://www.youtube.com/watch?v=K9XYgkPOUOw
Вот что он из себя представляет:
Похоже, что это не конвертор, а транслятор, позволяющий на Спектруме компилировать исходный текст для 6502 и получать готовый исполняемый код для этого процессора.Код:;
; Cross-Assembler for 6502 series
; Copyright (C) 1997 by Rst7/CBS
;
;-----------------------------------------
; Variable Section
;-----------------------------------------
;
ENABLE.ADDR.MODE EQU 0
OpCode EQU 0
;
;-----------------------------------------
; Parser Section
;-----------------------------------------
;
DEFMAC AdressingError
DISPLAY AdressingError
ENDMAC
;
DEFMAC PARSE_IMD
.IF ENABLE.ADDR.MODE&1
AdressingError
.ELSE
DEFB OpCode|#08
\r DEFB \n\s ; %...
.ENDIF
ENDMAC
;
DEFMAC PARSE_SX
.IF ENABLE.ADDR.MODE&2
AdressingError
.ELSE
DEFB OpCode|#00
\r DEFB \n\s ; (...,X)
.ENDIF
ENDMAC
;
DEFMAC PARSE_SY
.IF ENABLE.ADDR.MODE&4
AdressingError
.ELSE
DEFB OpCode|#10
\r DEFB \n\s ; (...),Y
.ENDIF
ENDMAC
;
DEFMAC PARSE_IX
.IF ENABLE.ADDR.MODE&8
AdressingError
.ELSE
.IF \0&#FF00
DEFB OpCode|#14
\r DEFB \0 ; ...,X ZERO
.ELSE
DEFB OpCode|#1C
\r DEFW \0 ; ...,X Norm
.ENDIF
ENDMAC
;
DEFMAC PARSE_IY
.IF ENABLE.ADDR.MODE&16
AdressingError
.ELSE
DEFB OpCode|#18
\r DEFW \0 ; ...,Y
.ENDIF
ENDMAC
;
DEFMAC PARSE_ABSOLUTE
\r .IF ENABLE.ADDR.MODE&32
AdressingError
.ELSE
.IF \0&#FF00
DEFB OpCode|#04
\r DEFB \0 ; ... ZERO
.ELSE
DEFB OpCode|#0C
\r DEFW \0 ; ... Norm
.ENDIF
ENDMAC
;
DEFMAC PARSE_ACC
.IF ENABLE.ADDR.MODE&64
AdressingError
.ELSE
DEFB OpCode|#08
.ENDIF
ENDMAC
;
DEFMAC PARSE
\r .IF " \0"-" "
PARSE_ACC
.ENDIF
\r .IF "\c"-"%"
PARSE_IMD \s
.ENDIF
.IF "\c"-"("|(" \1"-"X)")
PARSE_SX \s,
.ENDIF
.IF "\c"-"("|("\1 "-"Y ")
PARSE_SY \s)
.ENDIF
.IF "\c"-"("
AdressingError
.ENDIF
.IF "\1 "-"X "
PARSE_IX \s,
.ENDIF
.IF "\1 "-"Y "
PARSE_IY \s,
.ENDIF
;
PARSE_ABSOLUTE \s
ENDMAC
;
;-----------------------------------------
; Command Section
;-----------------------------------------
;
DEFMAC ADC
ENABLE.ADDR.MODE = #3F
OpCode = #61
\r PARSE \s
ENDMAC
;
DEFMAC AND
ENABLE.ADDR.MODE = #3F
OpCode = #21
\r PARSE \s
ENDMAC
;
DEFMAC CMP
ENABLE.ADDR.MODE = #3F
OpCode = #C1
\r PARSE \s
ENDMAC
;
DEFMAC EOR
ENABLE.ADDR.MODE = #3F
OpCode = #41
\r PARSE \s
ENDMAC
;
DEFMAC LDA
ENABLE.ADDR.MODE = #3F
OpCode = #A1
\r PARSE \s
ENDMAC
;
DEFMAC ORA
ENABLE.ADDR.MODE = #3F
OpCode = #01
\r PARSE \s
ENDMAC
;
DEFMAC SBC
ENABLE.ADDR.MODE = #3F
OpCode = #E1
\r PARSE \s
ENDMAC
;
DEFMAC STA
ENABLE.ADDR.MODE = #3E
OpCode = #81
\r PARSE \s
ENDMAC
;
DEFMAC BRK
DEFB #00
ENDMAC
;
DEFMAC CLC
DEFB #18
ENDMAC
;
DEFMAC CLD
DEFB #D8
ENDMAC
;
DEFMAC CLI
DEFB #58
ENDMAC
;
DEFMAC CLV
DEFB #B8
ENDMAC
;
DEFMAC DEX
DEFB #CA
ENDMAC
;
DEFMAC DEY
DEFB #88
ENDMAC
;
DEFMAC INX
DEFB #E8
ENDMAC
;
DEFMAC INY
DEFB #C8
ENDMAC
;
DEFMAC NOP
DEFB #EA
ENDMAC
;
DEFMAC PHA
DEFB #48
ENDMAC
;
DEFMAC PHP
DEFB #08
ENDMAC
;
DEFMAC PLA
DEFB #68
ENDMAC
;
DEFMAC PLP
DEFB #28
ENDMAC
;
DEFMAC RTI
DEFB #40
ENDMAC
;
DEFMAC RTS
DEFB #60
ENDMAC
;
DEFMAC SEC
DEFB #38
ENDMAC
;
DEFMAC SED
DEFB #F8
ENDMAC
;
DEFMAC SEI
DEFB #78
ENDMAC
;
DEFMAC TAX
DEFB #AA
ENDMAC
;
DEFMAC TAY
DEFB #A8
ENDMAC
;
DEFMAC TXA
DEFB #8A
ENDMAC
;
DEFMAC TYA
DEFB #98
ENDMAC
;
DEFMAC TSX
DEFB #BA
ENDMAC
;
DEFMAC TXS
DEFB #9A
ENDMAC
;
DEFMAC ASL
ENABLE.ADDR.MODE = 64+32+8
OpCode = #02
\r PARSE \s
ENDMAC
;
DEFMAC BIT
ENABLE.ADDR.MODE = 32
OpCode = #20
\r PARSE \s
ENDMAC
;
DEFMAC for.CP?
DEFB OpCode
\r DEFB \0
ENDMAC
;
DEFMAC CPX
ENABLE.ADDR.MODE = 32
OpCode = #E0
\r .IF "\c"-"%"
for.CP? \n\s
.ENDIF
\r PARSE \s
ENDMAC
;
DEFMAC CPY
ENABLE.ADDR.MODE = 32
OpCode = #C0
\r .IF "\c"-"%"
for.CP? \n\s
.ENDIF
\r PARSE \s
ENDMAC
;
DEFMAC DEC
ENABLE.ADDR.MODE = 32+8
OpCode = #C2
\r PARSE \s
ENDMAC
;
DEFMAC INC
ENABLE.ADDR.MODE = 32+8
OpCode = #E2
\r PARSE \s
ENDMAC
;
DEFMAC JMP
\r .IF "\c"-"("
DEFB #6C
\r DEFW \0
.ELSE
DEFB #4C
\r DEFW \0
.ENDIF
ENDMAC
;
DEFMAC JSR
DEFB #20
DEFW \0
ENDMAC
;
DEFMAC LDX
ENABLE.ADDR.MODE = 32+8
OpCode = #A2
\r .IF "\c"-"%"
for.CP? \n\s
.ENDIF
.IF "\1 "-"Y "
PARSE_IX \s,
.ENDIF
PARSE_ABSOLUTE \s
ENDMAC
;
DEFMAC LDY
ENABLE.ADDR.MODE = 32+8
OpCode = #A0
\r .IF "\c"-"%"
for.CP? \n\s
.ENDIF
.IF "\1 "-"X "
PARSE_IX \s,
.ENDIF
PARSE_ABSOLUTE \s
ENDMAC
;
DEFMAC LSR
ENABLE.ADDR.MODE = 64+32+8
OpCode = #42
\r PARSE \s
ENDMAC
;
DEFMAC ROL
ENABLE.ADDR.MODE = 64+32+8
OpCode = #22
\r PARSE \s
ENDMAC
;
DEFMAC ROR
ENABLE.ADDR.MODE = 64+32+8
OpCode = #62
\r PARSE \s
ENDMAC
;
DEFMAC STX
ENABLE.ADDR.MODE = 32
OpCode = #96
.IF "\1 "-"Y "
for.CP? \0
.ENDIF
OpCode = #82
\r PARSE_ABSOLUTE \s
ENDMAC
;
DEFMAC STY
ENABLE.ADDR.MODE = 32
OpCode = #94
.IF "\1 "-"Y "
for.CP? \0
.ENDIF
OpCode = #80
\r PARSE_ABSOLUTE \s
ENDMAC
;
DEFMAC BCC
DEFB #90,\0
ENDMAC
DEFMAC BCS
DEFB #B0,\0
ENDMAC
DEFMAC BEQ
DEFB #F0,\0
ENDMAC
DEFMAC BNE
DEFB #D0,\0
ENDMAC
DEFMAC BMI
DEFB #30,\0
ENDMAC
DEFMAC BPL
DEFB #10,\0
ENDMAC
DEFMAC BVS
DEFB #70,\0
ENDMAC
;
;---------
Что самое интересное, получить из этих исходников работающий образ диска для Apple ][ оказалось тем ещё квестом! Некоторые энтузиасты безуспешно пытались их скомпилировать, но всё было тщетно. Но нашёлся таки один мастер, который успешно справился с задачей и подготовил пакет ПО, с помощью которого любой желающий сможет собрать своего Принца для Apple ][ под Windows, Linux и MacOS. Скачать этот пакет вместе с исходниками Принца можно отсюда.
как я понял в оригинале был нестандартный формат дискеты (доп.защита + немного больший объём 157Kb вместо 140Kb)
это позволило уместить игру на две дискеты, взломанный вариант под стандарт на 3х дискетах.
и запустить именно оригинал на эмуле невозможно (нет поддержки этого формата)
(хотя возможно с момента выхода той статьи что я читал что-то и изменилось)