⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphics.h

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 H
📖 第 1 页 / 共 4 页
字号:
;
;        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 + -