Que empecé a programar para cpc. He publicado dos juegos. Y ahora voy a empezar otro en c.
ay va dios
viernes, 18 de noviembre de 2022
martes, 23 de agosto de 2022
Automodificable
Ld a,#5;;1
Ld (valor), a
Ld a,#6;;2
Ld (valor),a
Valor=.+1
Ld a,#0
;; En primer caso, valor es 1
;;En segundo caso, valor es 2
sábado, 26 de junio de 2021
Subo a github
Intento tener el programa o juego en GitHub. Es lo más fácil que conozco para intercambiarlo.
jueves, 24 de junio de 2021
Más rápido comparar con 0?
Me pregunto , supongamos el caso de una entidad, con posición x, igual a 4.
Le vamos restando una unidad. Cuando llegue a 0, impedimos que se reste más, antes o en esta comprobación.
Si x llega a -1, se pone a 0. En un número U8(sin signo), esto no es posible.
En tal caso, en ensamblador¿ sería más óptimo comparar con 0(jz) o con Carry(JC).?
miércoles, 23 de junio de 2021
Ahora,en C
viernes, 12 de febrero de 2021
ECS mejorado en Ensamblador para CPC
Esta vez pongo un pequeño programa, como base para le expansion de un ECS. Esta creado en ensamblador. tiene pocos comentarios, espero os sirva.
.module cpct_functions.h.s
.globl cpct_disableFirmware_asm
.globl cpct_waitVSYNC_asm
.globl cpct_scanKeyboard_f_asm
.globl cpct_isKeyPressed_asm
.globl cpct_setVideoMode_asm
.globl cpct_drawSolidBox_asm
.globl cpct_getScreenPtr_asm
.globl cpct_drawSprite_asm
.module main.s
.include "cpctelera.h.s"
.include "cpct_functions.h.s"
.include "man/game.h.s"
.area _DATA
.area _CODE
_main::
;;desactiva firmware
call cpct_disableFirmware_asm
;;init game manager
call man_game_init
;loop forever
loop:
call man_game_update
;waitNVsyncs 2
call cpct_waitVSYNC_asm
call man_game_render
jr loop
martes, 8 de diciembre de 2020
creacion de entidades con un ECS usando CPCTelera
pequeñito ejemplo de como, usndo en entity component system (ECS), se crean dos entidades distintas, y se pintan en pantalla.
;;main.s
;; ejemplo de dibujado simple de cuadrados
.module main.s
.include "cpctelera.h.s"
.area _DATA
.area _CODE
;;declaracion de globales
.globl cpct_disableFirmware_asm
.globl cpct_getScreenPtr_asm
.globl cpct_drawSolidBox_asm
.globl cpct_waitVSYNC_asm
.globl entityman_create
.globl rendersys_update
.globl _entity_array
.globl _num_entities
.globl entityman_getEntityArray_IX
.globl rendersys_init
.globl entityman_getNumEntities_A
;;declaracion de etiquetas,constantes
;;x,y,ancho,alto,color,velocidad x,vy
player: .db 20,20,04,16,0xff,0,0
enemy: .db 30,30,06,16,0xf0,0,0
;;principal
_main::
;; Disable firmware to prevent it from interfering with string drawing
call cpct_disableFirmware_asm
;;INIT SYSTEMS
call rendersys_init
ld hl,#player
call entityman_create
ld hl,#enemy
call entityman_create
loop:
call entityman_getEntityArray_IX
call entityman_getNumEntities_A
call rendersys_update
jr loop
parate:
jp parate