Вопросов нет, хороший пример как не надо делать, держи, пол часа и бутылка пива.
Вид для печати
Карта из тайлов полностью набрана:
https://c.radikal.ru/c04/2105/1b/45b9181fc2bb.png
Один в один, как в оригинале. 100% копия вплоть до мельчайшего камешка.
Точка перед меткой это чаго?Цитата:
держи, пол часа и бутылка пива.
Ещё вижу некоторые ставят
метка : инструкция
а некоторые двоеточие не ставят. Это зачем двоеточие? А бывает, что асм ругается и надо так писать
метка
инструкция
Это почему?
Не всё так просто, горячий финский парень. Там подпрограмма с GOGOGO юзается из других мест. Поэтому она сделана изолированной процедурой.Цитата:
хороший пример как не надо делать
- - - Добавлено - - -
Не спорьте, я инглиша не знаю. Все комменты русские. Имею проблемы с кодировками. Ну, и пофиг :biggrin:Цитата:
ради ясной и понятной цели не иметь потом проблем с кодировками
А еще есть jp\jr оптимизация
Код:jr c,l1
;часто выполняемое условие
l1
;редко выполняемое условие
выиграш в сравнении с jp
есть даже при соотношении
40+% 7 тактовых jr
60-% 12 тактовых jr
на случай если "часто выполняемое условие" не всегда часто выполняется
jr - 7*4 +12*6 = 100
jp - 10*4+10*6 = 100
если условие выполняется в соотношениях то 39\61 то 61\39
нужно использовать JP
- - - Добавлено - - -
это совсем с натяжкой...
а так цель у фанатеков такая
чтоб любой филипинскийафроизуит
мог открыть ваш сорец и прочитать коменты на каком то "стандартном" языке
который должны хоть как то знать все...
...но чем писать на непереводимом engrish-е
уж пусть лучше оно будет в переводимом национальном виде...
- - - Добавлено - - -
ну в некоторых асмах\языках метки пишутся c :
label:
и это есть обязательным условием
а в некоторых не пишотся
label
или есть опциональным (сджасму пофиг)
но зато сджасм не может метку не сначала строки...
что иногда очень даже мешает
по моему такая конструкция тоже НЕвозможна
label1 xor a : label2 di : halt
но это нужно уточнять....
я даже их принципиально удаляю когда мне они попадаются в чожом коде
тк мне они мозолят глаза (тк ЯВУ\сищниковая мерзость)
да и писать без : явно быстрее...
- - - Добавлено - - -
если вида
label : xor a
это синоним
label
xor a
можно писать вот так по людски
ld b,a : ld c,e : ld a,h
вместо мерзкого
ld b,a.e.c.hl.(hl),ix+4
которые некоторые ***** практикуют
чтоб сэкономить 3 байта на исходнике :v2_lol:
ну и это единственная возможнсоть сделать
var = $+1
ld a,0
в виде
var = $+1 : ld a,0
ТАК вроде НЕЛЬЗЯ
var = $+1 ld a,0
компилятор может даже не выдать вменяемую ошибку
а скомпилит неправильно
- - - Добавлено - - -
а так RTFM
http://z00m128.github.io/sjasmplus/documentation.html
там можно даже помещать чужой код с конфликтующими метками в "неконфликтующие" модули
и делать всякую порнографию
правда таким изращением уже нужно пользоваться с осторожностьюКод:MODULE main ; module "main"
Main: ; main.Main
CALL SetScreen ; SetScreen
CALL vdp.Cls ; main.vdp.Cls
.loop: ; main.Main.loop
LD A,(.event) ; main.Main.event
CALL ProcessEvent ; label not found: main.ProcessEvent
DJNZ .loop ; main.Main.loop
MODULE vdp ; module "main.vdp"
@SetScreen: ; SetScreen
.loop: ; main.vdp.SetScreen.loop
RET
Cls: ; main.vdp.Cls
!KeepClsForLocal: ; main.vdp.KeepClsForLocal (since v1.18.0)
.loop: DJNZ .loop ; main.vdp.Cls.loop
RET
ENDMODULE
Main.event DB 0 ; main.Main.event
ENDMODULE
сначала проверяя работоспособность
ато в sjasm-е долгое время много чего работало с ошибками...
например раньше неправильно работал disp (компилить код который будет ложится по другим адресам)
по моему в последнем старом sjasm-е то что rc7 или около того (тот которые многие еще используют)
ата бага еще есть
и некоторые адреса получается не теми которые должны
и никто не гарантирует что все пофикшено в новых ветках sjasm-а
Пробовал, - жёлтое редкостное г*внище. Красные зашибись.
На самом деле и тайловая карта и сборка карты будут ещё сто раз переделываться по ходу пьесы.
Сейчас у меня пока цель максимально быстро сделать первую сборку.
Не спорю, код великолепен, но опоясывающие циклы я снова выкину из подпрограммы наружу :tongue:Цитата:
Все очень просто, моя 107к т твоя 233. Цена этого ускорения 160 байт
Выводить змейкой я сам хотел, но чёт в мозгу щёлкнуло, мол регистровыми парами работаю, значит не получится. И не стал.
И напоминаю, мы не байты бережём, а такты. Времянки превыше всего. Это rts, тут особо не забалуешь.