Вход

Просмотр полной версии : рендеринг картинки по данным в снапшоте c64



jerri
18.10.2018, 06:21
Кто работал с с64
вот есть картинка выводимая на экран

как бы 3 цвета

картинка в памяти по #4400

атрибуты для нее #d800 (цвет №3)
цвета 1 и 2 соответственно #d022 и #d023

но цвета не те
что я делаю не так?

DenisGrachev
18.10.2018, 11:39
Дык там 3 миллиона режимов, включая картинки с заплатками спрайтами итд В каком режиме у тебя картинка? Обычный хайрез по типу спека?

jerri
18.10.2018, 20:03
Дык там 3 миллиона режимов, включая картинки с заплатками спрайтами итд В каком режиме у тебя картинка? Обычный хайрез по типу спека?

тайловый набор 3 цвета заданных
цвет №3 через d800

farfar
18.10.2018, 21:48
но цвета не те
что я делаю не так?

$d800 это цвет для символа адреса $0400 - $d801 = $0401 и т.д. и нах.... всё это Вам не нужно!!!
в мультиколоре для символов $d022,$d023 и цвет фона. И не забывайте про $d024
Существует 4 адреса фоновых цветов и один для окантовки.

Проведите следующие действия для наглядности - введите код:
poke1024,5;poke55296,1 -получите белый символ в верхнем левом углу

poke53270,24 - переход в мультиколор

думается дальше Вам станет понятнее.......

И еще можно поюзать poke646,цвет символа. (как 4-ый)



картинка в памяти по #4400
А это вообще ни о чём не говорит. Картинка может быть где угодно в памяти.
Для тайла вообще пох на каком адресе он записан.

Если не помогло, то

Резюме: должен быть код для нормального отображения, который размещает в нужный банк памяти картинку, пишет нужные цвета из нужного адреса....
в общем, как и для любого граф режима на С64.

Информацию, которую Вы даёте можно назвать недостаточной...

и посмотрите ещё здесь

http://commodore64.smforum.ru/index.php?PHPSESSID=p2ujdagargi14cfsl1st7cr9l5&board=14.0

jerri
18.10.2018, 22:49
$d800 это цвет для символа адреса $0400 - $d801 = $0401 и т.д. и нах.... всё это Вам не нужно!!!
в мультиколоре для символов $d022,$d023 и цвет фона. И не забывайте про $d024
Существует 4 адреса фоновых цветов и один для окантовки.

Проведите следующие действия для наглядности - введите код:
poke1024,5;poke55296,1 -получите белый символ в верхнем левом углу

poke53270,24 - переход в мультиколор

думается дальше Вам станет понятнее.......

И еще можно поюзать poke646,цвет символа. (как 4-ый)



А это вообще ни о чём не говорит. Картинка может быть где угодно в памяти.
Для тайла вообще пох на каком адресе он записан.

Если не помогло, то

Резюме: должен быть код для нормального отображения, который размещает в нужный банк памяти картинку, пишет нужные цвета из нужного адреса....
в общем, как и для любого граф режима на С64.

Информацию, которую Вы даёте можно назвать недостаточной...

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

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

66603

грубо говоря

вот такой дает эмулятор

66604
а вот такой я генерю
что за фигня с цветами?
цвета взяты из данных эмулятора

farfar
19.10.2018, 00:20
Ах вот оно чё.... :)
А вторая картинка тоже с эмуля с64?
Картинка должна быть в формате 320х200 для С64.
Да и чем снимаете скрины ?

Хотя не понимаю, что Вам мешает самому отредактировать, если использовать не будете на С64.....
Я чё это вообще не понял тогда заморочки....

farfar
19.10.2018, 02:20
вот, бл___дь, озадачил..

Короче говоря, чтоб не сильно напрягаться, нужно взять winvice, в настройках вика убрать border, дальше на нужной картинке открыть монитор и сделать скриншот (scrsh"имя").
Получится скрин 320х200. Дальше вставляешь в прогу PIXCEN https://csdb.dk/release/?id=149752
И записывай, как хочешь - хоть исполняемым файлом... Можно предварительно отредактировать и картинку и цвета, если вдруг, что не сходится....

goodboy
19.10.2018, 09:55
читать всю страницу https://www.gamestone.co.uk/zzap_world64/apex_creatures.php

farfar
19.10.2018, 10:09
Goodboy, я так думаю, что если человек хочет сделать порт на другую машинку, то в любом случае цвета будут другие и уж точно не обойтись без редакции спрайтов, картинок и прочего. Инфа про наложение цветов актуальна скорее всего именно для с64.

BYTEMAN
19.10.2018, 10:22
а вот такой я генерю
Мне кажется, или там с видеорежимами какая-то загвоздка? В эмуляторе я вижу, что Loading в Hi-Res идёт, а остальное - в мультиколоре... А у вас всё в мультиколоре и ессно каша получается...

jerri
19.10.2018, 21:58
Мне кажется, или там с видеорежимами какая-то загвоздка? В эмуляторе я вижу, что Loading в Hi-Res идёт, а остальное - в мультиколоре... А у вас всё в мультиколоре и ессно каша получается...

ну никак не могу разобраться как они щелкают видеорежимами
прерывания по нужной линии вроде не используются

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


Goodboy, я так думаю, что если человек хочет сделать порт на другую машинку, то в любом случае цвета будут другие и уж точно не обойтись без редакции спрайтов, картинок и прочего. Инфа про наложение цветов актуальна скорее всего именно для с64.

я просто выдернул из игры
оригинальные тайлы и карту и раскидал по позициям цвета.
но получается какая то дичь
цвет 3 для тайлов неверный

farfar
20.10.2018, 00:10
для начала я не пишу под с64, я с него ломаю
и вот уже второй раз у меня возникают с этим проблемы
причем именно с цветом и именно с этим самым игровым режимом


ну никак не могу разобраться как они щелкают видеорежимами
прерывания по нужной линии вроде не используются

Jerri, дорогой, ты мне скажи, в чём задача-то? картинку получить нужную? так я описал как...
Или всё же с кодом разобраться? Потому как, если бы всё так просто, то каждый стал бы хакером.
Не даром умы из прошлого старались шифровать свои коды.... :)

Да и вот только что, как-то прям прорезало: "я не пишу под с64, я с него ломаю" - не взаимо связанные ли эти вещи. Может всё таки углубиться. Заодно и нам расскажете...

"в чём задача-то?" это к тому, что ссылки, возможно, не те даём...

jerri
20.10.2018, 02:05
Jerri, дорогой, ты мне скажи, в чём задача-то? картинку получить нужную? так я описал как...
Или всё же с кодом разобраться? Потому как, если бы всё так просто, то каждый стал бы хакером.
Не даром умы из прошлого старались шифровать свои коды.... :)

Да и вот только что, как-то прям прорезало: "я не пишу под с64, я с него ломаю" - не взаимо связанные ли эти вещи. Может всё таки углубиться. Заодно и нам расскажете...

"в чём задача-то?" это к тому, что ссылки, возможно, не те даём...

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

jerri
20.10.2018, 09:06
Даже скажем больше получается не то что в эмуляторе.

так что мне бы консультацию опытного коммодорщика.
а не цитату из официального мануала.

farfar
20.10.2018, 11:21
Ну я не буду себя называть опытным, могу лишь как-то предположить, потому, как не лез в дебри игрушек.

И как вариант следующее: имеем 4 цвета $d022,$d023,$d024 - знакоцвет и $d021 фон.
Экран можно растровыми прерываниями делить. Причём делать hires, multicolor, обычный да и ещё фиг знает чего.
Так вот идея в том, чтобы разделить экран и поменять цвет фона, чтобы получить одновременно несколько разных фоновых цветов экрана.
И как следствие разные цвета, которые не будут совпадать в простом режиме multicolor.....

Блин, jerri, в данном случае только методом тыка, потому что даже опытный коммодорщик не залезая в код этой игры не скажет тебе в каком именно месте и что происходит с кодом...

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

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

farfar
21.10.2018, 13:34
И таки да, хоть ты и говоришь, мол, что толку от бесполезных ссылок, но всё же попробуй поюзать вот этот дебаггер: https://sourceforge.net/projects/c64-debugger/

jerri
21.10.2018, 18:30
farfar, спасибо конечно но я ICU64 использую для взлома

farfar
21.10.2018, 19:53
jerri, ICU64 не даёт тебе ту самую инфу, которую ты ищешь, а этот дебаггер сразу показал все цвета, где что и как.
К примеру,могу тебе сказать, что верхние и нижние надписи в hires, картинка и сами полоски вокруг надписей в мультиколоре. Так же там увидишь все адреса, сколько спрайтов и т.д. и т.п.
Хотя думается, что как всегда, если бы было ICU64+C64Debugger, то вообще крутяк....

BYTEMAN
22.10.2018, 17:54
К примеру,могу тебе сказать, что верхние и нижние надписи в hires, картинка и сами полоски вокруг надписей в мультиколоре.

Мне кажется, или там с видеорежимами какая-то загвоздка? В эмуляторе я вижу, что Loading в Hi-Res идёт, а остальное - в мультиколоре... А у вас всё в мультиколоре и ессно каша получается...

Таки мои догадки подтвердились?)

farfar
22.10.2018, 18:46
Подтвердились....:) Только это не поможет jerri, там надо включать прерывания для нормального эффекта...
Ну, если он конечно, не соберётся всё таки полюбить комодик :)

jerri
22.10.2018, 20:58
Таки мои догадки подтвердились?)

я могу даже код показать если это прояснить как они это делают

farfar
23.10.2018, 00:17
Простой пример разделения экрана, набери это код в мониторе....
Сверху мультиколор, снизу простой текст.
Код заполнения экрана символами с $080d, а с $0820 разделение экрана.
Ну и в путь.... хоть как дели, хоть как окрашивай, хоть что вставляй....
Но для того, чтобы понять углубиться всё таки надо в систему.....

jerri
23.10.2018, 19:46
farfar,



RAM:4847 loc_4847: ; CODE XREF: RAM:4827j
RAM:4847 ; RAM:483Fj ...
RAM:4847 SEI
RAM:4848 LDA #$90 ; 'Р'
RAM:484A STA ICR
RAM:484D LDA #0
RAM:484F STA interruptenabled
RAM:4852 STA byte_15D8
RAM:4855 STA byte_4939
RAM:4858 STA byte_39
RAM:485A LDA #$EC ; 'ь'
RAM:485C STA int_low
RAM:485F LDA #$48 ; 'H'
RAM:4861 STA int_high
RAM:4864 LDA #$D8 ; '+'
RAM:4866 STA TA_lo
RAM:4869 LDA #3
RAM:486B STA TA_hi
RAM:486E LDX byte_12A2
RAM:4871 JMP load_block

RAM:14D3 load_block: ; CODE XREF: RAM:4871j
RAM:14D3 LDA unk_BF1B,X
RAM:14D6 STA unk_493A
RAM:14D9 STA byte_3B
RAM:14DB LDA unk_BF26,X
RAM:14DE STA loc_494B+1
RAM:14E1 LDA unk_BEFA,X
RAM:14E4 STA loc_4927+1
RAM:14E7 LDX #$FF
RAM:14E9 STX byte_C
RAM:14EC TXS
RAM:14ED LDA #5
RAM:14EF STA byte_1
RAM:14F1 CLI

int___:
RAM:48EC STA byte_2
RAM:48EE LDA TA_hi
RAM:48F1 LSR A
RAM:48F2 LSR A
RAM:48F3 LDA #$11
RAM:48F5 STA byte_DC0E
RAM:48F8 ROL byte_B
RAM:48FA LDA byte_C
RAM:48FC BPL loc_4908
RAM:48FE LDA #$F
RAM:4900 CMP byte_B
RAM:4902 BNE loc_495F
RAM:4904 STA byte_C
RAM:4906 BEQ loc_495B
RAM:4908
RAM:4908 loc_4908: ; CODE XREF: RAM:48FCj
RAM:4908 BCC loc_495F
RAM:490A LDA byte_C
RAM:490C BEQ loc_4936
RAM:490E CMP #$F
RAM:4910 BNE loc_4925
RAM:4912 LDA byte_B
RAM:4914 CMP #$F
RAM:4916 BEQ loc_495B
RAM:4918 EOR #$B8 ; '¬'
RAM:491A BNE loc_4930
RAM:491C LDA #1
RAM:491E STA byte_C
RAM:4920 STA byte_B
RAM:4922 JMP loc_495F
RAM:4925 ; ---------------------------------------------------------------------------
RAM:4925
RAM:4925 loc_4925: ; CODE XREF: RAM:4910j
RAM:4925 LDA byte_B
RAM:4927
RAM:4927 loc_4927: ; DATA XREF: RAM:14E4w
RAM:4927 EOR #$FF
RAM:4929 BNE loc_4930
RAM:492B STA byte_C
RAM:492D JMP loc_495B
RAM:4930 ; ---------------------------------------------------------------------------
RAM:4930
RAM:4930 loc_4930: ; CODE XREF: RAM:491Aj
RAM:4930 ; RAM:4929j
RAM:4930 LDA #$FF
RAM:4932 STA byte_C
RAM:4934 BNE loc_495F
RAM:4936
RAM:4936 loc_4936: ; CODE XREF: RAM:490Cj
RAM:4936 LDA byte_B
RAM:4938
RAM:4938 loc_4938: ; DATA XREF: RAM:4855w
RAM:4938 ; RAM:493Bw ...
RAM:4938 STA int_high
RAM:493B INC loc_4938+1
RAM:493E BNE loc_4943
RAM:4940 INC loc_4938+2
RAM:4943
RAM:4943 loc_4943: ; CODE XREF: RAM:493Ej
RAM:4943 LDA loc_4938+1
RAM:4946 CMP #0
RAM:4948 LDA loc_4938+2
RAM:494B
RAM:494B loc_494B: ; DATA XREF: RAM:14DEw
RAM:494B SBC #$FF
RAM:494D BCC loc_495B
RAM:494F LDA #$7F ; ''
RAM:4951 STA ICR
RAM:4954 LDA #$35 ; '5'
RAM:4956 STA byte_1
RAM:4958 STA byte_15D8
RAM:495B
RAM:495B loc_495B: ; CODE XREF: RAM:4906j
RAM:495B ; RAM:4916j ...
RAM:495B LDA #1
RAM:495D STA byte_B
RAM:495F
RAM:495F loc_495F: ; CODE XREF: RAM:4902j
RAM:495F ; RAM:loc_4908j ...
RAM:495F LDA ICR
RAM:4962 LDA byte_2
RAM:4964 RTI
RAM:4964

farfar
24.10.2018, 00:10
jerri извини, но я такой синтаксис впервые вижу....
по мне так турбоассемблер или простой монитор картриджный....

jerri
24.10.2018, 19:13
jerri извини, но я такой синтаксис впервые вижу....
по мне так турбоассемблер или простой монитор картриджный....

это ИДА
просто некоторые адреса поименованы.

а твой синтаксис абсолютно такой же :)

farfar
24.10.2018, 20:45
Понятно, что мнемоники такие же, а вот адреса указаны совершенно иначе. Я так понял, что это кроссплатформенный дизассемблер... Надо глянуть, что там и как....

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

Sta ta low
Sta ta hi
Приблизительно понятно, что младший и старший байт, но что такое 'ta' и где?
Ну и так далее... Короче гляну я эту иду:v2_dizzy_facepalm:

jerri
24.10.2018, 22:09
это бро из мануала (https://www.c64-wiki.com/wiki/CIA)
Таймер А младшая часть значения
для удобства поименовал адреса метками как в описании CIA