PDA

Просмотр полной версии : Запакованный текст на C64 и Apple][



GARNIZON
09.12.2018, 16:18
Помогите распокавать текст. Речь идет о игрушке (квест) "Алиса в стране чудес" вышедшей в 1985 году на Commodore64 и Apple][.
Для обоих машин используется идентичная система хранения текста - прям блок содержащий набор фраз у обох машин байт в байт.

Вот например первый попавшийся персонаж заявляет такую фразу:

http://agatcomp.ru/Gamez/HLP/GIF/RABBITENG.png

D007 - отсюда движок его начинает читать, но там в каждом байте - от 1 до 3 букв.

D000- 00 00 00 00 00 FF 4E CC D0 30 35 2F 80 04 EC CD .....ЪnLP.....ЛM
D010- 05 4B 39 A4 4C D0 18 1A 97 C0 02 76 66 F4 89 A0 .k.$lP...@.жфТ.
D020- 69 59 C2 D4 66 80 C0 D4 BE 00 20 8D D0 02 B5 40 иyBTф.@T>...P.5
D030- 9D 99 A0 AC 21 DD 42 CE 38 2B 00 08 A0 08 22 14 .. ,.]bN.... ...
D040- CC 10 30 0A 19 81 B6 31 A9 E0 00 FF 0B 12 32 EE L.....6.)Ю.Ъ...Н
D050- 80 D4 2C 06 14 D5 06 A1 69 82 21 98 69 06 01 2E .T...U.!и...и...
D060- 03 75 D1 40 35 F0 00 FF 1C 1A 5D D0 01 62 46 5F .уQ.П.Ъ..}P.бf.
D070- 00 00 8C C2 3A A4 65 06 A1 69 80 D3 2B 86 8F 00 ...B.$е.!и.S....

1байт: = "I'"
2байт: = "M"
3байт: = "L"
4байт: = "A"
5байт: = "TE"
В общем , где-то 1-2 знака в байте, иногда вроде бы до 3-х, ну это включая пробелы

Скорее всего, упаковка без сложного сжатия, просто отрезаются старшие разряды (вероятно, отрезаются 3, остаётся 5), оставшиеся запихиваются в байты. При этом эти 5 - не коды ASCII, а указатели на таблицу вида char[0x40] = (' ', 'a', 'b'... и какие-то ещё символы). Известно, что есть два спецсимвола (действуют после раскодирования) : 0x1B и 0xFF. 0x1B - после него следующий символ выводится в видеопамять через другую таблицу, а 0xFF - скорее всего конец строки (неизвестно, как он возникает из 5 бит). Также есть предположение, что байты в выбираются не подряд, а, в зависимости от чего-то, возможны переходы назад/вперед.
Причем вот что ещё: там как действительно сокращённый знакогенератор, т.е. в "архиве" лежит некий код , который тоже ещё не символы, он уже в обычную кодировку преобразуется по таблице. Ну там просто " abcdef...какие-то ещё символы"

В 92 году, в Москве, человек имея только бумажную распечатку куска текстового блока, смог выяснить принцип системы хранения. Значит это реально и сейчас?

Для C64 тоже самое, только смешение блока в ОЗУ другое:
http://agatcomp.ru/Gamez/HLP/C64.png

jerri
09.12.2018, 17:50
GARNIZON, ты как это ломаешь?
если идой ты выложи весь пак
если ковыряешь как то по другому то дай снап памяти и точку входа

- - - Добавлено - - -

для с64
с адреса C000 находится бакграунд
с адреса с800 находится набор тайлов бакграунда
с адреса D000 находится фонт

jerri
09.12.2018, 21:07
короче так

идет набор символов
очередной байт загребается в буфер
если встречается #ff значит конец фразы

из очередного байта добираются 5 бит
#00-#1f

и берем буквы из таблицы


RAM:7293 first_char_set: .BYTE ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G'
RAM:7293 .BYTE 'H', 'I', 'J', 'K', 'L', 'M', 'N', ' '
RAM:7293 .BYTE 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V'
RAM:7293 .BYTE 'W', 'X', 'Y', ' ', 'Z', $D, '.', ' '

если встречаем #1b
то берем очередные 5 бит


RAM:72B3 second_char_set:.BYTE '-', '?', '!', ':', ';', '*', $27, '0'
RAM:72B3 .BYTE '1', '2', '3', '4', '5', '6', '7', ' '
RAM:72B3 .BYTE '8', '9', '(', ')', ',', ' ', ' ', ' '
RAM:72B3 .BYTE ' ', ' ', ' ', ' ', ' ', ' ', $FF, $1A

точнее не 5 бит а заданное количество бит, но задано было 5 :)

как видно из таблицы символ #1f не используется чтобы не было случайных #ff в текстовых сообщениях

shattered
09.12.2018, 23:51
хм, этакий Radix-50 :)

jerri
10.12.2018, 00:22
хм, этакий Radix-50 :)

а как в нем кодируется?

goodboy
10.12.2018, 11:02
а как в нем кодируется?
https://ru.wikipedia.org/wiki/RADIX-50

GARNIZON
10.12.2018, 11:35
ты как это ломаешь?
если идой ты выложи весь пак
если ковыряешь как то по другому то дай снап памяти и точку входа

Спасибо огромное! Ковыряю просто отладчиком эмулятора.
Поделитесь плиз, как вам это удалось сделать? Использовался диск от Комодора?

В аттаче дамп от Apple

Дамп снят во время выполнения команды по адресу 4372.
В дампе нет региона Cxxx - это порты ввода-вывода (в дампе заполнен NOP)


Сейчас известны следующие метки:

0076 DepackCnt
0077 pBuf_L
0078 pBuf_H
0079 Acc
007A SaveY
00A5 CursH Координата курсора по горизонтали
00A6 pSLineL
00A7 pSLineH
00A8 Attr Аттрибут текстового знакоместа
00DE pBufX_L
00DF pBufX_H

41F8 CursY Координата курсора по вертикали
4201 EncoderTab Таблицы декодера
4221 EncoderTab2
4311 CallPrint Отсюда начинается вывод фразы. A содержит номер фразы
4328 Print Y - счётчик бит восстановленного байта?
432F Loop
4362 Byte1B Байт, следующий за 1B, декодируется по отдельной таблице
436F COut1
4375 CR Перевод строки ?
438F COut C=0 на обычные символы и C=1 на FF
43A8 COut.1 C=0 на выходе
43BA ByteFF2
43CF Init_Print Вызывается перед обращением к Print
43F8 Encode
441F EncLoop

Эти процедуры могут изменять отображение банков памяти, но,
вроде бы, мне не встречалось их вызовов в дешифраторе текста:

5599 MemSet1 Включает банк 1 на Dxxx (сегмент F)
55A3 MemSet2 Включает банк 0 на Dxxx (сегмент E)
55AD MemSet3 Включает ПЗУ (сегмент 6-7)

Вывод строки начинается от процедуры CallPrint, ей в регистре A передаётся номер фразы,
но, возможно, для окончательного выбора фразы используются какие-то ещё данные (например, номер экрана).

Данные для разных фраз могут браться из разных частей памяти, например, наблюдалась выборка из Dxxx.
Возможно, байты фразы идут не подряд!
Итоговый результат (код символа) передаётся процедуре COut для вывода в видеоозу.

jerri
10.12.2018, 13:17
GARNIZON, просто есть такая штука ICU64 (http://icu64.blogspot.com/2012/10/icu64-for-vice-23-v012-released.html)и IDA (https://ru.wikipedia.org/wiki/IDA)
vice как самый удобный эмуль с64

Эппловскую версию наверное ковырять не буду, не уверен в адекватном эмуле.

в вайсе нахожу заполнение текстовой области и ставлю там ватчпойнт
как только идет обращение смотрю откуда и соответственно говорю иде где код
но я так понял там некий интерпретатор
вроде SCUMM (https://ru.wikipedia.org/wiki/SCUMM)

но настолько я конечно его не ковырял

- - - Добавлено - - -


https://ru.wikipedia.org/wiki/RADIX-50

я читать умею
но вот есть нюанс

RADIX-50 — это символьный код, который позволяет записать в одном 16-битном слове три символа
16/3=5
5=32 символа
у них 40 символов
как они кодируют еще 8?

GARNIZON
10.12.2018, 14:21
Эппловскую версию наверное ковырять не буду

Что вы, и на этом спасибо! Единственное что, нельзя ли увидеть в моем дампе хотя бы - где хранится каталог фраз. Т.е. есть ли где-то в явном виде начала строк?

goodboy
10.12.2018, 15:02
но я так понял там некий интерпретатор
ага, в нём ещё сделана игрушка "Below the Root"

https://youtu.be/xdUBefQ1cT4

jerri
10.12.2018, 15:23
Что вы, и на этом спасибо! Единственное что, нельзя ли увидеть в моем дампе хотя бы - где хранится каталог фраз. Т.е. есть ли где-то в явном виде начала строк?

насчет каталога фраз
он их высчитывает
но есть ссылки на какие то блоки вот этих видимо фраз




RAM:7254 txt_blks_l: .BYTE 0, 0, $10, $D5, 7, $DB, $7E, $C0, $51, $33, $22, $6E, $C1, $28, $82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
RAM:7270 txt_blks_h: .BYTE 0, $77, $7A, $7A, $7C, $7E, $82, $84, $86, $8A, $8F, $B6, $BC, $BE, $BE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

RAM:734E dep_blocktxt: ; CODE XREF: sub_72D3:loc_732Bp
RAM:734E INC byte_7291
RAM:7351 TAX
RAM:7352 LDA txt_blks_l,X
RAM:7355 STA block_text
RAM:7357 LDA txt_blks_h,X
RAM:735A STA block_text+1
RAM:735C JSR init_depak
RAM:735F LDY #0
RAM:7361 JSR depak_message
RAM:7364 RTS
RAM:7364 ; End of function dep_blocktxt
RAM:7364
RAM:7365
RAM:7365 ; =============== S U B R O U T I N E =======================================
RAM:7365
RAM:7365
RAM:7365 depak_message: ; CODE XREF: dep_blocktxt+13p
RAM:7365 LDX message_num
RAM:7368 BEQ depak
RAM:736A LDY #8
RAM:736C
RAM:736C text_seek: ; CODE XREF: depak_message+11j
RAM:736C ; depak_message+18j
RAM:736C LDA (in_ptr),Y
RAM:736E INC in_ptr
RAM:7370 BNE loc_7374
RAM:7372 INC in_ptr+1
RAM:7374
RAM:7374 loc_7374: ; CODE XREF: depak_message+Bj
RAM:7374 CMP #$FF
RAM:7376 BNE text_seek
RAM:7378 LDA (in_ptr),Y
RAM:737A STA cur_in_bs
RAM:737C DEX
RAM:737D BNE text_seek
RAM:737F
RAM:737F depak: ; CODE XREF: depak_message+3j
RAM:737F ; depak_message+3Ej
RAM:737F JSR pick_char
RAM:7382 CMP #$FF
RAM:7384 BEQ char_decrunched
RAM:7386 CMP #$1B
RAM:7388 BEQ use_second_charset
RAM:738A AND #$1F
RAM:738C TAX
RAM:738D LDA first_char_set,X
RAM:7390 JMP char_decrunched
RAM:7393 ; ---------------------------------------------------------------------------
RAM:7393
RAM:7393 use_second_charset: ; CODE XREF: depak_message+23j
RAM:7393 JSR pick_char
RAM:7396 CMP #$FF
RAM:7398 BEQ char_decrunched
RAM:739A AND #$1F
RAM:739C TAX
RAM:739D LDA second_char_set,X
RAM:73A0
RAM:73A0 char_decrunched: ; CODE XREF: depak_message+1Fj
RAM:73A0 ; depak_message+2Bj ...
RAM:73A0 JSR print_char
RAM:73A3 BCC depak
RAM:73A5 RTS
RAM:73A5 ; End of function depak_message
RAM:73A5
RAM:73A6
RAM:73A6 ; =============== S U B R O U T I N E =======================================
RAM:73A6
RAM:73A6
RAM:73A6 cr_lf: ; CODE XREF: print_char:cc_enterp
RAM:73A6 PHA
RAM:73A7 LDA print_shift
RAM:73A9 CLC
RAM:73AA ADC print_adr
RAM:73AC CMP #$71 ; 'q'
RAM:73AE BCS not_line0
RAM:73B0 LDA #$71 ; 'q'
RAM:73B2 JMP set_line_adr
RAM:73B5 ; ---------------------------------------------------------------------------
RAM:73B5
RAM:73B5 not_line0: ; CODE XREF: cr_lf+8j
RAM:73B5 CMP #$99 ; 'Щ'
RAM:73B7 BCS not_line1
RAM:73B9 LDA #$99 ; 'Щ'
RAM:73BB JMP set_line_adr
RAM:73BE ; ---------------------------------------------------------------------------
RAM:73BE
RAM:73BE not_line1: ; CODE XREF: cr_lf+11j
RAM:73BE LDA #$C1 ; '+'
RAM:73C0
RAM:73C0 set_line_adr: ; CODE XREF: cr_lf+Cj
RAM:73C0 ; cr_lf+15j
RAM:73C0 STA print_adr
RAM:73C2 PLA
RAM:73C3 LDY #0
RAM:73C5 STY print_shift
RAM:73C7 RTS
RAM:73C7 ; End of function cr_lf
RAM:73C7
RAM:73C8
RAM:73C8 ; =============== S U B R O U T I N E =======================================
RAM:73C8
RAM:73C8
RAM:73C8 print_char: ; CODE XREF: sub_733D+5p
RAM:73C8 ; depak_message:char_decrunchedp
RAM:73C8 CMP #$FF
RAM:73CA BEQ cc_endprint
RAM:73CC STY temp_Y
RAM:73CE CMP #$D
RAM:73D0 BNE not_cc_enter
RAM:73D2 LDA inverse_flag
RAM:73D4 BEQ cc_enter
RAM:73D6 LDA #$D
RAM:73D8 JMP not_cc_enter
RAM:73DB ; ---------------------------------------------------------------------------
RAM:73DB
RAM:73DB cc_enter: ; CODE XREF: print_char+Cj
RAM:73DB JSR cr_lf
RAM:73DE JMP next_char
RAM:73E1 ; ---------------------------------------------------------------------------
RAM:73E1
RAM:73E1 not_cc_enter: ; CODE XREF: print_char+8j
RAM:73E1 ; print_char+10j
RAM:73E1 LDY inverse_flag
RAM:73E3 BEQ not_inverted
RAM:73E5 ORA #$80 ; 'А'
RAM:73E7
RAM:73E7 not_inverted: ; CODE XREF: print_char+1Bj
RAM:73E7 LDY print_shift
RAM:73E9 STA (print_adr),Y
RAM:73EB INC print_shift
RAM:73ED
RAM:73ED next_char: ; CODE XREF: print_char+16j
RAM:73ED LDY temp_Y
RAM:73EF CLC
RAM:73F0 RTS
RAM:73F1 ; ---------------------------------------------------------------------------
RAM:73F1
RAM:73F1 cc_endprint: ; CODE XREF: print_char+2j
RAM:73F1 JSR sub_73F6
RAM:73F4 SEC
RAM:73F5 RTS
RAM:73F5 ; End of function print_char
RAM:73F5
RAM:73F6
RAM:73F6 ; =============== S U B R O U T I N E =======================================
RAM:73F6
RAM:73F6
RAM:73F6 sub_73F6: ; CODE XREF: sub_733D+Dp
RAM:73F6 ; print_char:cc_endprintp
RAM:73F6 LDA print_adr
RAM:73F8 CLC
RAM:73F9 ADC print_shift
RAM:73FB SEC
RAM:73FC SBC #72
RAM:73FE STA byte_7292
RAM:7401 RTS
RAM:7401 ; End of function sub_73F6
RAM:7401
RAM:7402
RAM:7402 ; =============== S U B R O U T I N E =======================================
RAM:7402
RAM:7402
RAM:7402 init_depak: ; CODE XREF: dep_blocktxt+Ep
RAM:7402 LDY #8
RAM:7404 STY curr_in_ctr
RAM:7406 LDA block_text
RAM:7408 LDX block_text+1
RAM:740A SEC
RAM:740B SBC #8
RAM:740D STA in_ptr
RAM:740F BCS loc_7412
RAM:7411 DEX
RAM:7412
RAM:7412 loc_7412: ; CODE XREF: init_depak+Dj
RAM:7412 STX in_ptr+1
RAM:7414 LDA (in_ptr),Y
RAM:7416 STA cur_in_bs
RAM:7418 LDA #5
RAM:741A STA cur_char_ctr
RAM:741C LDA #3
RAM:741E STA byte_75
RAM:7420 RTS
RAM:7420 ; End of function init_depak
RAM:7420
RAM:7421
RAM:7421 ; =============== S U B R O U T I N E =======================================
RAM:7421
RAM:7421
RAM:7421 pick_char: ; CODE XREF: depak_message:depakp
RAM:7421 ; depak_message:use_second_charsetp
RAM:7421 LDY curr_in_ctr
RAM:7423 LDX cur_char_ctr
RAM:7425 LDA #0
RAM:7427
RAM:7427 pick_bits: ; CODE XREF: pick_char+Dj
RAM:7427 ROL cur_in_bs
RAM:7429 ROL A
RAM:742A DEY
RAM:742B BEQ pick_next_bs
RAM:742D
RAM:742D cont_bs_strip: ; CODE XREF: pick_char+26j
RAM:742D DEX
RAM:742E BNE pick_bits
RAM:7430 STY curr_in_ctr
RAM:7432 RTS
RAM:7433 ; ---------------------------------------------------------------------------
RAM:7433
RAM:7433 pick_next_bs: ; CODE XREF: pick_char+Aj
RAM:7433 LDY #8
RAM:7435 STY curr_in_ctr
RAM:7437 INC in_ptr
RAM:7439 BNE loc_743D
RAM:743B INC in_ptr+1
RAM:743D
RAM:743D loc_743D: ; CODE XREF: pick_char+18j
RAM:743D PHA
RAM:743E LDA (in_ptr),Y
RAM:7440 CMP #$FF
RAM:7442 BEQ end_pattern
RAM:7444 STA cur_in_bs
RAM:7446 PLA
RAM:7447 JMP cont_bs_strip
RAM:744A ; ---------------------------------------------------------------------------
RAM:744A
RAM:744A end_pattern: ; CODE XREF: pick_char+21j
RAM:744A PLA
RAM:744B LDA #$FF
RAM:744D RTS

avivanov76
10.12.2018, 16:02
из очередного байта добираются 5 бит
В Apple такой способ используется еще в Мониторе - там мнемоники команд для встроенного дизассемблера так хранятся.


у них 40 символов
как они кодируют еще 8?
Считайте, что 16-битное слово - это трехзначное число в 40-ринчой системе счисления. То есть берете первый символ (от 0 до 39), потом второй символ и умножаете его на 40, потом третий символ и умножаете его на 1600. Потом все складываете. Получается 3 символа в слове.
Чтобы распаковать - действуете в обратную сторону, то есть берете по модулю 40 - получаете первый символ, делите на 40 - получаете второй, делите на 1600 - получаете третий.

jerri
11.12.2018, 23:50
GARNIZON, а для чего этот взлом?
хочешь портировать?

AlexBel
12.12.2018, 13:35
GARNIZON, а для чего этот взлом?
хочешь портировать?

Игра состоит из двух частей, русифицирована только первая часть. Вторая, из-за повреждённого диска-оригинала, русифицирована не была. Поэтому основная цель - русификация второй части.

Как поиск квеста "Алиса в стране чудес" сам превратился в квест (http://forum.agatcomp.ru//viewtopic.php?id=211)

jerri
12.12.2018, 17:17
GARNIZON, я тут эмулятор присмотрел нормальный
может и посмотрю различия с с64 версией

jerri
13.12.2018, 16:51
GARNIZON, короче
с первого диска грузится картинка в лоурез графическом режиме
если сможешь расшифровать то что они делают в этом блоке?


300 HOME : POKE 230,32: CALL 62450: HGR : POKE 49234,0: PRINT CHR$(4);"BLOAD WINDHAM": POKE 49238,0: POKE 49235,0
400 PRINT CHR$(4);"BRUN GAME"
410 END


WINDHAM - та самая картинка
GAME грузится по адресу #4000 и туда же запускается

- - - Добавлено - - -



take_InStream: ; CODE XREF: take_char+Aj
RAM:440A PHA
RAM:440B LDY #8
RAM:440D STY In_byte_ctr
RAM:440F INC InStreamPtr
RAM:4411 BNE loc_441F
RAM:4413 INC InStreamPtr+1
RAM:4415 LDA InStreamPtr+1
RAM:4417 CMP #$B6 ; '¦' ; in_data reaches #b600
RAM:4419 BNE loc_441F
RAM:441B LDA #$E3 ; 'у' ; skip data to E300
RAM:441D STA InStreamPtr+1
RAM:441F
RAM:441F loc_441F: ; CODE XREF: take_char+19j
RAM:441F ; take_char+21j
RAM:441F LDA (InStreamPtr),Y
RAM:4421 CMP #$FF
RAM:4423 BEQ phrase_ended
RAM:4425 STA InStreamByte
RAM:4427 PLA
RAM:4428 JMP loc_4404


я так понимаю часть данных при загрузке до адреса #b600 продолжается с E300

jerri
13.12.2018, 22:20
IDA Version 6.8.150423 (32-bit)
частично разобранная алиса (уровень еще не загружен) (https://www.dropbox.com/s/jco2gccdqm0hjai/alice_apple.idb?dl=0)
на экране надпись (insert side B and press SPACE)

GARNIZON
14.12.2018, 00:44
а для чего этот взлом?

Вот как сказал AlexBel, есть "жалостливая" история: http://forum.agatcomp.ru//viewtopic.php?id=211
Там как раз в конце есть ссылка на остальное. Хотелось бы после реализации этого, рискнуть заняться русификацией комодоровской версии.


WINDHAM - та самая картинка
GAME грузится по адресу #4000 и туда же запускается

Я после операции, и не быстро реагирую на форум, иначе бы уже прислал ссылку на то, что уже накопал:
http://agatcomp.ru/Gamez/Alice_Q.shtml

jerri
14.12.2018, 10:06
Вот как сказал AlexBel, есть "жалостливая" история: http://forum.agatcomp.ru//viewtopic.php?id=211
Там как раз в конце есть ссылка на остальное. Хотелось бы после реализации этого, рискнуть заняться русификацией комодоровской версии.



Я после операции, и не быстро реагирую на форум, иначе бы уже прислал ссылку на то, что уже накопал:
http://agatcomp.ru/Gamez/Alice_Q.shtml

ага :)
ну насчет загрузки с первого диска - я его не видел
насчет спрайтов 24х21

авторы изначально ориентировались на С64
это стандарт с64
кстати как они обошли Аппловский рваный экран?

короче выводы верные
на втором диске карты экранов, шрифты для них и спрайты персонажей.
когда я смотрел коммодоровскую загрузку то в этих рваных подгрузках он грузил спрайты и экраны.

fifan
15.12.2018, 11:52
Модераторы, перенесите тему в соответствующий компьютеру раздел.

GARNIZON
15.12.2018, 12:50
Модераторы, перенесите тему в соответствующий компьютеру раздел.

А какому? Apple][ или C64?


кстати как они обошли Аппловский рваный экран?

Спрайты нарисованы таким образом(тупой фейс Алисы например), чтобы пёстрости не было, и на комодор они переехали в таком же виде.
Поэтому, я думаю сразу две версии задумывались, спрайты по стандарту комодора, а их рисунок по стандарту Apple.
Хотя версия для С64 явно во всем круче, анимация огня в камине и прочее, чего нет на Apple. С другой стороны на С64 заливки очень однотипные, вот скажем коврик у Алисиной сестры и гриб гусеницы из одного теста, там с кружечками.
Думаю что на С64 могли и спрайты покрасивей нарисовать и заливок больше применить - но унификация :)

Ну и звуки конечно, Алиса же по ходу игры несколько песен разучивает, это мелодиями сопровождается. SID конечно это играет замечательно, а бипер Эпловский по сравнению с ним - так себе. Кроме того, у С64 озвучены полёты на зонтике и ХЛЕБO-МАСЛО-ЛЁТе . И шаги разные по звучанию, скажем когда Алиса наелась гриба и большая или наоборот маленькая - на Apple этих всех звуков нет (точнее они однотипные).

GARNIZON
15.10.2019, 02:05
vice как самый удобный эмуль с64

А вот как с помощью этого замечательного эмулятора посмотреть какой трек\сектор сейчас читается?

Вот конкретно про второй (вторая сторона) диск Алисы: хотелось бы понять что именно читается на нем до момента старта игры.
Т.е. хотя бы просто откуда читает, уж про то куда складывает мечтать не приходится.

В правом нижнем углу эмулятора вроде бы выводится такая инфа, но углядеть читаемый сектор (а там явно кусками а не полностью дорожками)
не представляется возможным, даже если уменьшить скорость эмуляции до 1 процента.

Кроме того, лампочка горит почти всегда и понять читается ли что-то или просто едет голова в другое место - не понять.

jerri
15.10.2019, 12:05
GARNIZON, дисковод на С64 это особая песня. чаще всего грузится все методом доступа к файлам
посмотри есть ли файлы на втором диске.

GARNIZON
15.10.2019, 16:46
Нет, на втором диске нет файлов и файловой системы вообще. Поэтому мне и нужна карта загрузки, от момента как вставлен второй диск и до момента как началась игра. Этим эмулятором такое посмотреть не удается(или я не знаю как).

GARNIZON
18.10.2019, 17:54
чаще всего грузится все методом доступа к файлам


А есть какая-то возможность вытянуть с первого комодоровского диска файл "GAME" , нужен его дизасм.

С эпловской версией разобрались, будет перевод, с комодором нужна помощь.

jerri
18.10.2019, 20:33
GARNIZON, если посмотришь второй диск любой смотрелкой
то в принципе все видно.

GARNIZON
18.10.2019, 22:23
Что видно? где описатели комнат (по 256 байт)лежат видно, уже декодировать научились, где спрайты лежат видно - тоже все ясно. Но где лежит текст, должно быть около 10 кусков раскиданных по диску, не видно.

Поэтому мне и надо или карту загрузки второго диска с точностью до сектора, или выковырянный с первого диска файл GAME.