Estoy optimizando código y necesito ayuda para acceder a índices de tablas de forma más eficiente. De momento estoy usando el registro IX y funciona bién, pero he probado con HL y no me sale.
La función "table_str" me da un poco igual, aunque supongo que se puede mejorar bastante.
La que me preocupa es la que la llama que gasta 9 bytes, que tengo que repetir en diferentes partes del programa y reutilizaré para gestionar sprites también.
Alguna idea mejor sin usar IX?
Gracias de antemano
Código: Seleccionar todo
.menu_static_strings:
ld b,6 ;(2B) ;total filas
ld ix,menu_static_str_table;(4B) ;tabla a leer
jp table_str ;(3B)
.table_str:
table_str_lp:
ld e,(ix):inc ix ;(5B)
ld d,(ix):inc ix ;(5B)
ld l,(ix):inc ix ;(5B)
ld h,(ix) ;(3B)
push bc ;(1B)
call prep_text_spr ;(3B) ;Función de texto: requiere HL DE / AF BC DE HL afectados
pop bc ;(1B)
inc ix ;(2B)
djnz table_str_lp ;(2B)
ret ;(1B)
.menu_static_str_table: ;posición y address de la string
defw &1C88,string_redef1 ;(4B)
defw &1C90,string_redef2
defw &1C98,string_modo
defw &1CA0,string_victoria
defw &1CA8,string_equip
defw &1CB0,string_comenz
:
:
defw....
.string_redef1 db "1 CONTROL J1",0
.string_redef2 db "2 CONTROL J2",0
.string_modo db "3 MODO JUEGO",0
.string_victoria db "4 C.VICTORIA",0
.string_equip db "5 MESA/COLOR",0
:
:
db....