Не стоит так сразу рубить концы, патчи такого рода просто наводят порядок.
Вид для печати
Не стоит так сразу рубить концы, патчи такого рода просто наводят порядок.
psb, исходники из Аласм на 90% компилятся в сжасм
но вот 10% огорчают
как то
- вложенная условная компиляция
- конструирование имен меток в макросах
Скрытый текст
Код:;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\0\1\7\6
INC \3 ;l/h
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
LD A,(DE)
RLA
JC raysec\0\1\7\6
DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ENDIF
raynsec\0\1\7\6
INC HX
IFN mainplus ;основное направление положительно
INC \2 ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC \4 ;d/e
ELSE
DEC \2,\4 ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \5 ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \3 ;l/h
ELSE ;побочное направление отрицательно
DEC \3,\5 ;l/h,e/d
ENDIF
JP raynsec\0\1\7\6
raysec\0\1\7\6
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM
[свернуть]
- плотная запись данных (необязательно но просто приятно)
Скрытый текст
Код:DD 3f4041424445467f ;превращается в db #3f,#40,#41,#42,#44,#45,#46,#7f
[свернуть]
хм :) ты я вижу давно ничего не писал.
ты исходничек то посмотрел?
это кусок вулфа48
будет компилится в чем то кроме аласма - будет еще одна игра.
потому и необязательное :) просто удобное. просто DD которое длинное DW оно вообще как часто используется в данных?
То есть, ты пишешь просто очередную версию SjAsm только для того, чтобы уменьшить output компилятора? Тогда это не полезная идея. И да, если оно работает только под UNIX, зачем мне быть с этим по пути, если я не держу UNIX для развлечения дома?
зрение никуда не годится... я просто не пишу такой страшный *****код, который потом хрен распарсишь или поддержишь. исходник не смотрел, только мельком. стиль алоне-кодера известен и узнается сразу, больше так никто не пишет и не хочет писать, и не хочет это выкуривать. и это о чем-то да говорит.
кроме того, я обнаглею и рискну предположить, что подобное можно переложить на ужасм не так уж и сложно, было бы желание. не без костылей, но все же.
В моих примерах, кстати, не должно быть ничего экстраординарного. Я бы порекомендовал добыть еще всяких разных проектов для SjAsm.