📄 graphics.h
字号:
;
; Function : Draw a dots block.
; Description : 画出一个图形方块.
; Input argument : INS : 图形方块的 address.
; OX:方块左上角X座标。
; OY:方块左上角Y座标(除8)。
; x : 图形宽度.
; Y : 图形高度(除8)。
; DrawMode 绘图方式
; 注意!图形方块请放置在ROM data区段(8000h~ffffh).
; 图形方块结构请叁阅Graphic.asm中的 "Draw"
; subroutine.
;
; Output argument : OX+=x , OY+=y.
;[M]-----------------------------------------------[M]
LDraw0 macro _width,_height
ifma 1
ldx #_width
endif
ifma 2
ldy #_height
endif
if graphics_bank=BankNo
jsr Draw0
else
jsr LJSR
dw graphics_bank ; #Bank No.
dw Draw0-1
endif
endm
LoprintImage MACRO x,y,imagedata
ifma 3
lda #x
sta <ox
lda #y
sta <oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
if updatesc_bank=BankNo
jsr game_PrintImagetoLcd_Bug
else
jsr ljsr
dw updatesc_bank
dw game_PrintImagetoLcd_Bug-1
endif
ENDM
LPrintImage MACRO x,y,imagedata
ifma 3
lda #x
sta <lcd_ox
lda #y
sta <lcd_oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
if updatesc_bank=BankNo
jsr printimagetolcd_bug
else
jsr ljsr
dw updatesc_bank
dw printimagetolcd_bug-1
endif
ENDM
LoClrImage MACRO x,y,imagedata
ifma 3
lda #x
sta <ox
lda #y
sta <oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
if updatesc_bank=BankNo
jsr speed_clrlcdimage_bug
else
jsr ljsr
dw updatesc_bank
dw speed_clrlcdimage_bug-1
endif
ENDM
LClrImage MACRO x,y,imagedata
ifma 3
lda #x
sta <lcd_ox
lda #y
sta <lcd_oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
if graphics_bank=BankNo
jsr game_ClrLcdImage
else
jsr ljsr
dw graphics_bank
dw game_ClrLcdImage-1
endif
ENDM
LPrintImagetoLcd MACRO x,y,imagedata
ifma 3
lda #x
sta <lcd_ox
lda #y
sta <lcd_oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
endif
if graphics_bank=BankNo
jsr printimagetolcd
else
jsr ljsr
dw graphics_bank
dw printimagetolcd-1
endif
ENDM
LClrLcdImage MACRO x,y,imagedata
ifma 3
lda #x
sta <lcd_ox
lda #y
sta <lcd_oy
lda #<imagedata
sta <image_addrl
lda #>imagedata
sta <image_addrh
elseif
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
if graphics_bank=BankNo
jsr game_ClrLcdImage
else
jsr ljsr
dw graphics_bank
dw game_ClrLcdImage-1
endif
ENDM
; ***************************************************************************
LBlockInvert MACRO _patw,_path
ifma 2
lda #_patw
sta <image_width
lda #_path
sta <image_hight_temp
endif
; if graphics_bank=BankNo
; jsr new_blockinvert
; else
; jsr ljsr
; dw graphics_bank
; dw new_blockinvert-1
; endif
if updatesc_bank=BankNo
JSR _BLOCK_INVERT
else
jsr ljsr
dw updatesc_bank
dw _BLOCK_INVERT-1
endif
ENDM
;[M]-----------------------------------------------[M]
; Jump to Main routine.
;
; Function : 跳回主程序.
; Description : Update text screen.
; Input argument : 无.
; Output argument : 无.
;
;[M]-----------------------------------------------[M]
LMain macro
;; smb7 <SysOpt
if updatesc_bank=BankNo
jmp Main_Bug
else
jsr LJSR
dw updatesc_bank
dw Main_Bug-1
endif
endm
;[M]-----------------------------------------------[M]
; Jump to Main routine(UnUpdate screen)
;
; Function : 跳回主程序
; Description : Non-Update text screen.
; Input argument : 无.
; Output argument : 无.
;
;[M]-----------------------------------------------[M]
LMainU macro
;; rmb7 <SysOpt
if updatesc_bank=BankNo
jmp MainU_Bug
else
jsr LJSR
dw updatesc_bank ; Banck No.
dw MainU_Bug-1
endif
endm
LjPrintImage MACRO x,y,imagedata
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
jsr prr_to_drr
if updatest_bank=bankno
jsr jgame_printimagetolcd_bug
else
jsr ljsr
dw updatesc_bank
dw jgame_printimagetolcd_bug-1
endif
ENDM
LjClrImage MACRO x,y,imagedata
ifma 1
lda #<x
sta <image_addrl
lda #>x
sta <image_addrh
endif
jsr prr_to_drr
jsr ljsr
dw graphics_bank
dw jgame_ClrLcdImage-1
ENDM
;;=====================================================
Lcdata_decide_write_flash
MACRO
if biosbank=BankNo
JSR cdata_decide_write_flash
ELSE
if updatesc_bank=BankNo
jsr _cdata_decide_write_flash
else
jsr LJSR
dw updatesc_bank
dw _cdata_decide_write_flash-1
endif
ENDIF
ENDM
Lcdata_decide_ChipErase
macro
if graphics_bank=BankNo
jsr cdata_decide_ChipErase
else
jsr LJSR
dw graphics_bank
dw cdata_decide_ChipErase-1
endif
ENDM
Lcdata_decide_SectorErase
macro
if graphics_bank=BankNo
jsr cdata_decide_SectorErase
else
jsr LJSR
dw graphics_bank
dw cdata_decide_SectorErase-1
endif
endm
Lcdata_decide_updatescreen
macro
if graphics_bank=BankNo
jsr cdata_decide_updatescreen
else
jsr LJSR
dw graphics_bank
dw cdata_decide_updatescreen-1
endif
endm
lReadOldContrast
macro
jsr LJSR
dw yiyiBank
dw ReadOldContrast-1
endm
lcdata_decide_lmainu
macro
jsr LJSR
dw biosBank
dw cdata_decide_lmainu-1
endm
lcdata_decide_lmain
macro
jsr LJSR
dw biosBank
dw cdata_decide_lmain-1
endm
;;==============================================================
;; 本子程式破坏:800H ~ ... 根据数据长度不同,破坏数据长度不同!!!!
;; 破坏: DRR !!!!!!!!!!!!
;;宏的后面所跟的参数为:要copy数据长度
;; ram地址
;; 目标Flash的DRR值,
;; 目标Flash的地址.
;; 参数可一个都不赋,而在应用程式中计算好!(4个参数)
;;==============================================================
lcopy_ram_data_to_flash macro _lengthl,_source,_object_drr,_object
ifma 4
stz data_lengthh
lda #_lengthl
sta data_lengthl
lda #>_source
sta <flash_pointer_sh
lda #<_source
sta <flash_pointer_sl
lda #<_object_drr
sta <flash_object_drr
lda #>_object
sta <flash_pointer_dh
lda #<_object
sta <flash_pointer_dl
endif
jsr ljsr
dw updatesc_bank
dw _copy_ram_data_to_flash-1
endm
;;==============================================================
;; 本子程式破坏:800H ~ ... 根据数据长度不同,破坏数据长度不同!!!!
;; 破坏: DRR !!!!!!!!!!!!
;;宏的后面所跟的参数为:
;; 要copy数据长度
;; 源Flash的DRR值,
;; 源Flash的地址.
;; 目标Flash的DRR值,
;; 目标Flash的地址.
;; 参数可一个都不赋,而在应用程式中计算好!(5个参数)
;;==============================================================
lcopy_flash_data_to_flash macro _lengthl,_source_drr,_source,_object_drr,_object
ifma 5
stz data_lengthh
lda #_lengthl
sta data_lengthl
lda #<_source_drr
sta <flash_source_drr
lda #>_source
sta <flash_pointer_sh
lda #<_source
sta <flash_pointer_sl
lda #<_object_drr
sta <flash_object_drr
lda #>_object
sta <flash_pointer_dh
lda #<_object
sta <flash_pointer_dl
endif
jsr ljsr
dw updatesc_bank
dw _copy_flash_data_to_flash-1
endm
;;=====================================================
lread_key_again macro
jsr ljsr
dw testbank
dw read_key_again-1
endm
;;=====================================================
lread_key_again_game macro
jsr ljsr
dw DelDataBank
dw game_read_key_again-1
endm
; ***************************************************************************
LSETIO_BUG
MACRO
.if onoff_bank=BankNo
jsr setio_bug
.else
jsr ljsr
dw onoff_bank
dw setio_bug-1
.endif
ENDM
; ***************************************************************************
LInitIO_Bug:
MACRO
.if onoff_bank=BankNo
jsr InitIO_Bug
.else
jsr ljsr
dw onoff_bank
dw InitIO_Bug-1
.endif
ENDM
; ***************************************************************************
LPOWEROFF_BUG:
MACRO
.if BankNo=onoff_bank
jmp EntPowOff_bug
.else
lda #>EntPowOff_bug-1
pha
lda #<EntPowOff_bug-1
pha
lda #>onoff_bank
pha
lda #<onoff_bank
jmp longgo
.endif
ENDM
; ***************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -