EXCEEDの同人ソフト開発日記という名の備忘録

趣味のゲームソフト開発人。プロなのかアマなのかは不明(不定)らしい。

任天堂のソフトはいつも予定通りに出てこないって言われるけど、
ソフト作りっていうのは、そういうもの。
ゲームソフトは、期限までにやれと言われて、徹夜したり死に物狂いでやったからといって、
期待通りのものにはならない。そういうふうにすると、
結局、チームは妥協しなければならなくなる。
妥協させられて、できたものは、粗くなってしまう。
ユーザーは目が肥えていますから、受け付けてもらえない

山内 薄

加速度センサー

土曜はひさびさに、朝11時に早起き(早起きというのか?)したので、近所の書店に Interface の 12月号を買いに出かける。ついに SilentMoon の BIOS コールの仕様が公開されたが、InitAd や GetAd などの付録基板依存なサービスコールは公開されていなかった。そこで SilentC.bin をディスアセして BIOS エントリーテーブルを確認した所、やっぱり別実装になっていたっぽいので自作してみた。



.cpu 5200
InitAd:
;----------------------------------
; in void
; out void
;----------------------------------
subq.l #2*4,sp
movem.l d0/a0,(sp)

lea.l $40100000,a0

move.b $000e(a0),d0
andi.l #$F9,d0
move.b d0,$000e(a0)

move.b $0026(a0),d0
ori.l #$06,d0
move.b d0,$0026(a0) ;DDRTA

moveq.l #$70,d0 ;強制的に 4,5,6ポートを使う
move.b d0,$006a(a0) ;PANPAR

lea.l $40190000,a0
move.w $0052(a0),d0
andi.l #$FFFC,d0
move.w d0,$0052(a0)

moveq.l #$03,d0
move.w d0,$0002(a0)

moveq.l #$00,d0
move.w d0,$0000(a0)

movem.l (sp),d0/a0
addq.l #2*4,sp
rts

GetAd:
;----------------------------------
; in d0.l = Port No.(4〜6)
; out d0.l = ADC Param(0〜4095)
;----------------------------------
subq.l #2*4,sp
movem.l d1/a0,(sp)

lea.l $40190000,a0
move.w (a0),d1
ori.l #$2000,d1
move.w d1,(a0)

add.l d0,d0
move.w $0012(a0,d0.l),d0
lsr.l #3,d0
andi.l #4095,d0

movem.l (sp),d1/a0
addq.l #2*4,sp
rts

一応、動いているっぽいので、よしとしよう。