PITFALL! for ぴゅう太

TI-99/4A版を勝手移植してみました。

http://atariage.com/forums/topic/158467-pitfall-binaries-and-source-code/

D

TI-99/4Aのディスク版をベースにぴゅう太 32KB(4000-BFFF)版をつくってみました。

http://www.geocities.jp/parallel_computer_inc/pitfall1.0.zip

32KB版は初代ぴゅう太(要ゲームアダプタ)/Jr/mk2+32KBフラッシュメモリカートリッジで動きます。

http://www.geocities.jp/parallel_computer_inc/cart.html

こちらはxdt99でビルドできます。

http://endlos99.github.io/xdt99/

$ ./xas99.py -b -R pitfall_disk.a99  -L pitfall_disk.lst

TMS9995が速すぎたのでNOPを追加しました。

        MOVB  R2,@VDPA
        SWPB  R2
        MOVB  R2,@VDPA
SPRIT4  MOVB  *R1+,@VDPW

        MOVB  R2,@VDPA
        SWPB  R2
        MOVB  R2,@VDPA
        NOP
        NOP
        NOP
SPRIT4  MOVB  *R1+,@VDPW

ぴゅう太mk2で動かすために以下のマジックナンバーを埋め込みました。

5344 BYTE  >00,>02,>20,>34

ぴゅう太Jrで動かすために以下の機種判定を追加しました。

*--------------------------------------------------------------
* Scan joystick #1
*-------@-----@---------------------@--------------------------
KBSCA1  LI    R0,>0000
        MOVB  @>0002,R0
        CZC   @BIT5,R0              ; Pyuuta Jr ?
        JNE   JUNIOR
PYUUTA  LI    R12,>EC40             ; Scan whole 8x8 keyboard matrix. R12 Required by LDCR
        STCR  R2,8                  ; Bring 8 row bits into MSB of R2
        AI    R1,>0006
        MOVB  R2,@KEYBUF(R1)        ; Store BYTE in KEYBUFfer
        MOVB  @KEYBUF+6,R0          ; Joystick 1
        B     @KBSCAE
JUNIOR  MOVB  @>E800,R0
KBSCAE  COC   @BIT5,R0              ; FIRE pressed ?
        JNE   KBSCAF
        SOC   @BIT4,@VIRTKB         ; Set fire
KBSCAF  COC   @BIT2,R0              ; Moved left ?
        JNE   KBSCAG
        SOC   @BIT0,@VIRTKB         ; set LEFT
KBSCAG  COC   @BIT0,R0              ; Moved right ?
        JNE   KBSCAH
        SOC   @BIT1,@VIRTKB         ; set RIGHT
KBSCAH  COC   @BIT3,R0              ; Moved down ?
        JNE   KBSCAI
        SOC   @BIT3,@VIRTKB         ; set DOWN
KBSCAI  COC   @BIT1,R0              ; Moved up ?
        JNE   KBSCAC                ; No, exit
        SOC   @BIT2,@VIRTKB         ; set UP
KBSCAC  COC   @BIT4,R0              ; FIRE pressed ?
        JNE   KBSCAJ
        SOC   @BIT9,@VIRTKB         ; set BACK
*--------------------------------------------------------------
* Exit
*-------@-----@---------------------@--------------------------
KBSCAJ  MOV   *STACK,R12            ; Pop R12
        DECT  STACK
        B     @POPRG2