Это sizecoding с другими трюками и приемчиками(:
Вид для печати
и есть где почитать про такое? я конечно нашел массу ресурсов, но это 1976-1982 в основном и там скорее какие-то общие приёмы.
я кстати вашу демку собрать не смог на atasm переделав, видимо что-то специфичное для вашего asm там используется или, что более вероятно, перевёл неправильно.
upd: всё собрал, всё работает )
Часть тут:
http://www.sizecoding.org/wiki/6502
https://www.nesdev.org/wiki/Synthetic_instructions
https://g0blinish.ucoz.ru/forblog_6502/eorFF.zip
https://g0blinish.ucoz.ru/forblog_65...2tricks_V2.zip
Для компиляции нужен xasm. Я на него пересел, потому что пришлось кодить 16K intro, раньше использовал atasm.
- - - Добавлено - - -
под atasm
Код:;batch for compile
;set nam=gens
;atasm.exe -s %nam%.asm
;rename %nam%.65o %nam%.xex
*=$8000
start
; lda #0 ; open graphics 0 mode
; jsr $ef9c ; openmode=$ef9c
; setup font
lda #$20
sta 756
istart ldx #0
stx 755 ; inverse off
; delay
RTCLOK=$0012
dl ldy #0
; roll
rolld lda font_data,y
asl a
adc #0
sta font_data,y
iny
cpy #(spr_e-font_data)
bne rolld
ldy #5
dlay
lda RTCLOK+2
wait
cmp RTCLOK+2
beq wait
dey
bne dlay
copyd lda font_data,x
sta $2000,y
iny
inx
cpy #8
bne copyd
cpx #(spr_e-font_data)
beq istart
bne dl
font_data
; sprites 0
.byte ~00001000
.byte ~00001000
.byte ~00001000
.byte ~11111000
.byte ~00011111
.byte ~00010000
.byte ~00010000
.byte ~00010000
; sprites 1
.byte ~00001000
.byte ~00001000
.byte ~00011000
.byte ~11100100
.byte ~00100111
.byte ~00011000
.byte ~00010000
.byte ~00010000
; sprites 2
.byte ~00001000
.byte ~00011000
.byte ~01100100
.byte ~10000010
.byte ~01000001
.byte ~00100110
.byte ~00011000
.byte ~00010000
; sprites 3
.byte ~00011000
.byte ~01100100
.byte ~10000010
.byte ~00000001
.byte ~10000000
.byte ~01000001
.byte ~00100110
.byte ~00011000
; sprites 4
.byte ~01110010
.byte ~10000001
.byte ~00000001
.byte ~00000001
.byte ~10000000
.byte ~10000000
.byte ~10000001
.byte ~01001110
; sprites 5
.byte ~11110001
.byte ~00000001
.byte ~00000001
.byte ~00000001
.byte ~10000000
.byte ~10000000
.byte ~10000000
.byte ~10001111
; sprites 6
.byte ~00010100
.byte ~01100010
.byte ~10000001
.byte ~00000001
.byte ~10000000
.byte ~10000001
.byte ~01000110
.byte ~00101000
; sprites 7
.byte ~00001000
.byte ~00010100
.byte ~01100010
.byte ~10000001
.byte ~10000001
.byte ~01000110
.byte ~00101000
.byte ~00010000
spr_e
; run start
спасибо
я изучал немного код в основном для mads, а как начал сам что-то пробовать писать, то постоянно какие-то проблемы, то там то сям что-то не работает, пересел на atasm как неделю назад, всё вроде бы получается, я в том смысле что компилируется и работает, а с mads как-то не заладилось.
а xasm какие плюшки даёт и почему с интро это стало решающим?
только xasm скомпилировал исходники RMT player.
Подробно написано в документации на github. Например:
повтор 23 раза, причем счетчик можно использовать:Код::23 dta $2
Еще один плюс - вставка бинарного файла:Код::16 dta l(dither+8*#),h(dither+8*#) ; #-repeater
Здесь пропускается два байта, что для меня важно для сжатия pucrunch, который дописывает лишние данные.Код:ins "plasmfnt.pck",2
Аналог .SBYTE из atasm:
Код:dta d" remember:"
угу, понял, в mads мне такое нравилось, а atasm правда конструкция чуть иная, там .REPT/.ENDR кажется, но тоже можно использовать счётчик. Да, в инструкции раздел "3.17 .REPT <word>, .ENDR"
Я RMT собирать не пробовал, только видел в архиве mads'а кажется он был, ну или по крайней мере RMT плейер, во вложении добавил
Вложение 81450
вы наверняка знакомы с этой статьёй Интроспека
скажите как вам кажется pucrunch или aplib имеет смысл брать на вооружение? интересует конкурсный вариант Game 4K или 16K
например у ZX0 очевидная проблема с сжатием - требуется последовательное размещение данных одним монолитным блоком, типично ли это для pucrunch и aplib?
в общем ваше мнение по сжатию.
еще, тут pucrunch который вы использовали для 6502 можете сюда выложить, чтобы уже понимать что это рабочий вариант
Нет, я не читал статью интроспека - много воды и ничего полезного.
Я стал использовать pucrunch, потому что сжимает неплохо и скорость распаковки приемлемая. Но zx7 сжал хуже. Пару раз использовал zx7, файлы сжались на отлично, но распаковывалось долго:
Картинка: https://www.pouet.net/prod.php?which=80700
psg dump:https://www.pouet.net/prod.php?which=79828
Примеры использования:
https://g0blinish.ucoz.ru/forblog_zx/pucrunch8bit.zip
или в 16K intro:
https://g0blinish.ucoz.ru/demo3/sv24se/ol_src.7z
.pck - сжатые файлы
- - - Добавлено - - -
Кстати, на AtariAge упаковщики обсуждают:
https://forums.atariage.com/topic/26...crunch-megalz/
для разных версий ZX7-ZX5 добавлены исходники распаковки:
https://forums.atariage.com/topic/31...-atari/page/4/
- - - Добавлено - - -
Забыл добавить список утилит:
https://madteam.atari8.info/index.php?prod=uzytki
В старое время использовал только Super Packer, хватило и этого.
Нет, трюк со шрифтом
https://i.ibb.co/BjLT1p8/plasm1k.png