PlayLoud!! 別館

■元記事
2011-03-15

;ランク値表示入口
	org		$11EE
	jmp		$7fBB0.l
;バージョン表示入口
	org		$2582
	jmp		$7fcfa.l
;メモリチェックエラー分岐潰し
	org		$15A08
	nop
;ランク値表示ルーチン
	org		$7FBB0
	movem.l	D0-D7/A0-A7,-(A7)
;2P START読み込み
	move.b	$21c029,d0
	andi.b	#$40,d0
	beq		push2p
;2P連射防止フラグ
	cmpi.w	#1,$503ff2
	beq		skip0
	move.w	#1,$503ff2
;ランク値表示状態判定(トグル)
	cmpi.w	#1,$503ff0
	beq		disp_off
	move.w	#1,$503ff0
	bra		skip0
disp_off
	move.w	#0,$503ff0
	bra		skip0
push2p	;2PS押されてない
	move.w	#0,$503ff2
skip0
	cmpi.w	#0,$503ff0
	beq		skip3
;ランク値取得
	lea		$10c9d2.l,a0
	lea		$500046.l,a1
	move.w	#$03,d2
;ランク値表示色設定
	move.w	#$d000,d3
	cmpi.l	#$a00000,(a0)
	bcs		loop
	move.w	#$c800,d3
	cmpi.l	#$c00000,(a0)
	bcs		loop
	move.w	#$d400,d3
	cmpi.l	#$d00000,(a0)
	bcs		loop
	move.w	#$cc00,d3
	cmpi.l	#$e00000,(a0)
	bcs		loop
	move.w	#$c400,d3
loop	;ランク値→16進数表示文字コード変換
	move.b	(a0)+,d0
	move.b	d0,d1
	ror		#4,d0
	andi.w	#$000f,d0
	andi.w	#$000f,d1
	addi.w	#$0030,d0
	addi.w	#$0030,d1
	cmpi.w	#$003a,d0
	bcs	skip1
	addi.w	#7,d0
skip1
	cmpi.w	#$003a,d1
	bcs	skip2
	addi.w	#7,d1
skip2	;ランク値表示 VRAM書き込み
	add.w	d3,d0
	add.w	d3,d1
	move.w	d0,(a1)+
	lea		$7E(a1),a1
	move.w	d1,(a1)+
	lea		$7E(a1),a1
	dbra	d2,loop
	bra		skip4
skip3	;ランク値表示消去
	lea		$500046.l,a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
	clr.w	(a1)
	lea		$80(a1),a1
;デモ画面の小タイトル欠け防止
	cmpi.w	#$d1c7,$5003c4
	bne		skip5
	move.w	#$d1b5,$5003c6
	bra		skip4
skip5
	clr.w	(a1)
skip4
	movem.l	(a7)+,d0-d7/a0-a7
	lea		$500000.l,a5
	jmp		$11f4.l
;バージョン表示
	movem.l	D0-D7/A0-A7,-(A7)
;画面に「CO.,LTD」の「C」表示、小タイトル表示検出
;(デモ画面かどうかの判定)
	move.l	a1,d0
	cmpi.l	#$00500a86,d0
	bne		skip2_0
	cmpi.w	#$c043,d3
	bne		skip2_0
	lea		$5008ba,a2
	cmpi.w	#$d22b,(a2)
	beq		skip2_1
	lea		$500b30,a2
	cmpi.w	#$cc56,(a2)
	beq		skip2_0
	bra		skip2_2
skip2_1
	lea		$5008b8,a2
	cmpi.w	#$cc56,(a2)
	beq		skip2_0
skip2_2	;バージョン文字列 VRAM書き込み
	lea		let,a3
	move.w	#6,d0
loop2_0
	move.w	(a3)+,(a2)
	lea		$80(a2),a2
	dbra	d0,loop2_0
skip2_0	;VBlank待ち(本来のルーチンへ帰る前に待ちますよ)
	move.w	$21c03c.l,d7
	bmi     skip3_0
	move.w	$21c03c.l,d7
skip3_0
	cmpi.b	#$f1,d7
	bcs     skip2_0
	cmpi.b	#$fc,d7
	bcc     skip2_0
	movem.l	(a7)+,d0-d7/a0-a7
;本来の処理
	lea		$80(a1),a1
	jmp		$257a.l
let	;バージョン文字列
	.dc.w	$cc56
	.dc.w	$cc65
	.dc.w	$cc72
	.dc.w	$cc2e
	.dc.w	$cc4b
	.dc.w	$cc30
	.dc.w	$cc31
	.end

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます