首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在asm中为MOS 6502创建延迟

如何在asm中为MOS 6502创建延迟
EN

Stack Overflow用户
提问于 2014-02-09 07:43:37
回答 4查看 5.2K关注 0票数 3

我是ASM的新手,我试图解决如何为以下代码创建延迟:

代码语言:javascript
复制
org $1000

loop: inc $d021
    jmp loop
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-10 03:17:35

我想评论已经很清楚了。

每帧更改颜色的代码示例(1/50秒)

代码语言:javascript
复制
        sei       ; enable interrupts

loop1:  lda #$fb  ; wait for vertical retrace
loop2:  cmp $d012 ; until it reaches 251th raster line ($fb)
        bne loop2 ; which is out of the inner screen area

        inc $d021 ; increase background color

        lda $d012 ; make sure we reached
loop3:  cmp $d012 ; the next raster line so next time we
        beq loop3 ; should catch the same line next frame

        jmp loop1 ; jump to main loop

每秒钟更换颜色的代码示例

代码语言:javascript
复制
counter = $fa ; a zeropage address to be used as a counter

        lda #$00    ; reset
        sta counter ; counter

        sei       ; enable interrupts

loop1:  lda #$fb  ; wait for vertical retrace
loop2:  cmp $d012 ; until it reaches 251th raster line ($fb)
        bne loop2 ; which is out of the inner screen area

        inc counter ; increase frame counter
        lda counter ; check if counter
        cmp #$32    ; reached 50
        bne out     ; if not, pass the color changing routine

        lda #$00    ; reset
        sta counter ; counter

        inc $d021 ; increase background color
out:
        lda $d012 ; make sure we reached
loop3:  cmp $d012 ; the next raster line so next time we
        beq loop3 ; should catch the same line next frame

        jmp loop1 ; jump to main loop
票数 7
EN

Stack Overflow用户

发布于 2014-02-09 07:47:29

例如:

代码语言:javascript
复制
loop: ldx $d021
      inx
      stx $d021
      cpx #100
      bne loop
票数 0
EN

Stack Overflow用户

发布于 2016-05-02 18:54:09

这个怎么样?这应该会改变背景,等待4秒,然后再改变它。永远重复。

注意,您可以将秒数从0更改为255。

这是针对NTSC机器的,但是您可以将60更改为50 for PAL

代码语言:javascript
复制
main:
    inc $D021

    ldx #4          //  Wait 4 seconds
loop1:
    ldy #60
loop2:

waitvb:
    bit $D011
    bpl waitvb
waitvb2:
    bit $D011
    bmi waitvb2

    dey
    bne loop2
    dex
    bne loop1

    jmp main
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21656605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档