X



【FC】スーパーマリオブラザーズ改造しようぜ!

■ このスレッドは過去ログ倉庫に格納されています
2011/11/05(土) 02:24:02.02ID:7atVNV/f
スーパーマリオブラザーズ改造しようぜ!
814名無しさん@お腹いっぱい。
垢版 |
2023/07/04(火) 21:59:53.92ID:klmboEcf
>>396
バグ発見してしまったorz
早速修正版です。
ANNSMB_MPR195_v09c
https://www.a%78fc.net/u/4067016.zip
815名無しさん@お腹いっぱい。
垢版 |
2023/07/04(火) 22:11:28.35ID:klmboEcf
変更点
v0.9→v0.9a
ワールドセレクト版じゃない方に盆ミスが判明。それを修正。一応動いていたが...
v0.9a→v0.9c
ワールドセレクト版で8-4をクリアするとタイトル画面に戻ったときに画面が点滅して操作不能になる。
どうもパッチした箇所が不適切なようでした。ワールドセレクト版じゃないほうにも同じコードが入っていましたが、こちらは
タイトル画面に戻っていたので、見落としていた。(但し状況によっては同様のバグが発生する可能性有り。)
の修正。
816名無しさん@お腹いっぱい。
垢版 |
2023/07/04(火) 22:58:18.59ID:klmboEcf
理論上はマッパー142でも動くと思っていたので作業を行っていた所、バグを発見したというヲチ。
いろいろ試してみるものですね...
https://i.imgur.com/vEJ1m3C.jpg
817名無しさん@お腹いっぱい。
垢版 |
2023/07/05(水) 23:08:33.83ID:8WYVt27R
>>816
マッパー142版ANNSMBはMMC3またはマッパー195版のコードを殆どコピペしただけですんなり動きました。
それならばと、再現性の高いMMC版SMB2Jをマッパー142でもすんあり動くんじゃねと、上記の手順でやって
みた所、う動かない...
コピペで手抜きではいけないのかも。
こちらは、嵐のコード、赤いパックンフラワー、ワールド9用コードがあるので、
こちらは手抜きコピペではなく、慎重にマッパー142版SMB2Jにパッチを当てる必要があるかも。
818名無しさん@お腹いっぱい。
垢版 |
2023/07/05(水) 23:28:52.30ID:8WYVt27R
>>816
マッパー142版ANNSMBは$6000-$7FFFはROMになっていますがエンディングでフリーズしない
事を確認。但しエンディングの音楽はバグっています。エンディングの音楽がちゃんと鳴るように
$6000-$7FFFをバンク切り替えするバージョンも作って見ましたが、こちらは完璧な動作です。
819名無しさん@お腹いっぱい。
垢版 |
2023/07/06(木) 11:56:13.08ID:Sb6s1RC9
>>819
SMB2Jが動かなかったのは手抜きし過ぎたのが駄目だった。ANNSMBの方は丁寧にパッチしてあったわ。
仕切りなおしで、SMB2J Keiser(マッパー142)版に赤パックンと緑ジャンプ台のコードを移植したら
問題なく動作しました。
嵌まった箇所としては
● Keiser(マッパー142)版とMMC3版はタイトル画面でスタートボタンを押したときと、ゲームオーバーに
なった時の処理がそれぞれ異なるパッチが当てられていた。しかも$E000-FFFFにパッチコードを
置いているが同じアドレスを使っていてややこしい。(keiser版は残機が減らないモードがついている?)
要調査。

● 赤パックンと緑ジャンプ台も空き容量の関係で$E000-FFFFにパッチコードを置いていますが、
赤パックンと緑ジャンプ台のパッチコードが全然違う場所に配置されていた。そのためにメンテナンス性が
悪化していた。どうしてこんなことに...
2023/07/06(木) 12:07:08.76ID:Sb6s1RC9
備考

E0C0: C0 1B CPY #$1B
E0C2: B0 06 BCS $E0CA
E0C4: C0 18 CPY #$18
E0C6: 90 02 BCC $E0CA
E0C8: A5 52 LDA $52 = #$02
E0CA: 60 RTS

FBD0: B5 1E LDA $1E,X @ $0025 = #$00
FBD2: 4C 00 A0 JMP $A000

関連するコードだから隣接して配置すべき。
2023/07/06(木) 12:16:25.23ID:AKXxqRAC
はえーすっごい
822名無しさん@お腹いっぱい。
垢版 |
2023/07/06(木) 19:56:31.10ID:Sb6s1RC9
>>819
メモ程度に
FDS
701B: CE 5A 07 DEC $075A

702B: AD 5F 07 LDA $075F

7FF9: F0 11 BEQ $800C

Kaiser(マッパー142)版
701B: 20 00 FC JSR $FC00

702B: 4C A0 F8 JMP $F8A0

7FF9: 4C 00 FC JMP $FC00

MMC3版
701B: 20 00 FC JSR $FC00

702B: 4C A0 F8 JMP $F8A0

7FF9: F0 11 BEQ $800C

FDS
701B: CE 5A 07 DEC $075A
7020: A9 00 LDA #$00
7022: 8D 72 07 STA $0772
7025: A9 03 LDA #$03
7027: 8D 70 07 STA $0770
702A: 60 RTS
702B: AD 5F 07 LDA $075F

Kaiser(マッパー142)版
701B: 20 00 FC JSR $FC00
701E: 10 0B BPL $702B
7020: A9 00 LDA #$00
7022: 8D 72 07 STA $0772 = #$04
7025: A9 03 LDA #$03
7027: 8D 70 07 STA $0770 = #$00
702A: 60 RTS
702B: 4C A0 F8 JMP $F8A0

MMC3版
701B: 20 00 FC JSR $FC00
701E: 10 0B BPL $702B
7020: A9 00 LDA #$00
7022: 8D 72 07 STA $0772 = #$04
7025: A9 03 LDA #$03
7027: 8D 70 07 STA $0770 = #$00
702A: 60 RTS
702B: 4C A0 F8 JMP $F8A0
2023/07/06(木) 20:03:32.02ID:Sb6s1RC9
続き

Kaiser(マッパー142)版とMMC3版 共通
F8A0: AD FB 07 LDA $07FB = #$00
F8A3: C9 00 CMP #$00
F8A5: D0 06 BNE $F8AD
F8A7: AD 5F 07 LDA $075F = #$00
F8AA: 4C 2E 70 JMP $702E
F8AD: AD 5F 07 LDA $075F = #$00
F8B0: 0A ASL
F8B1: AA TAX
F8B2: AD 5C 07 LDA $075C = #$00
F8B5: 29 02 AND #$02
F8B7: F0 01 BEQ $F8BA
F8B9: E8 INX
F8BA: BC C0 F8 LDY $F8C0,X @ $F8CD = #$EF
F8BD: 4C 3B 70 JMP $703B

Kaiser(マッパー142)版
FC00: AD E7 01 LDA $01E7 = #$FF
FC03: C9 5A CMP #$5A
FC05: F0 03 BEQ $FC0A
FC07: CE 5A 07 DEC $075A = #$02
FC0A: 60 RTS

MMC3版
FC00: F0 0B BEQ $FC0D
FC02: AD 04 07 LDA $0704 = #$00
FC05: F0 03 BEQ $FC0A
FC07: 4C 00 80 JMP $8000
FC0A: 4C 88 80 JMP $8088
FC0D: 4C 0C 80 JMP $800C
2023/07/06(木) 20:13:57.39ID:VeoZTm5E
あーセックスしてえ~
2023/07/06(木) 20:21:16.71ID:Sb6s1RC9
>>822
コード長いから最小限だけ貼ろうとしたら余分に貼ってしまった。
ついでなので
メモ程度に
FDS
7FF7: A5 1D LDA $1D
7FF9: F0 11 BEQ $800C
7FFB: AD 04 07 LDA $0704
7FFE: F0 F4 BEQ $7FF4


Kaiser(マッパー142)版
7FF7: A5 1D LDA $1D = #$00
7FF9: F0 11 BEQ $800C
7FFB: AD 04 07 LDA $0704 = #$00
7FFE: F0 F4 BEQ $7FF4


MMC3版
7FF7: A5 1D LDA $1D = #$00
7FF9: 4C 00 FC JMP $FC00
7FFC: EA NOP
7FFD: EA NOP
7FFE: F0 F4 BEQ $7FF4
2023/07/06(木) 20:49:45.56ID:Sb6s1RC9
>>822-825
アドレス$FC00-FC0F及び
$701B、$702B、$7FF9のパッチすれば、相互変換できます。(MMC3版のコードをマッパー142に
導入して動作確認。)
MMC3版のコードの方が洗練されている気がするが、Kaiserの方が$FE00-FFFFのアドレスパッチが
多少なく済むかな...
でなんでこのようなパッチが当てられているかというと、ルイージのジャンプ力と滑りの為に導入されていると
思われる。
2023/07/06(木) 21:34:50.08ID:Sb6s1RC9
>>706 >>813
keiser(マッパー版SMB2J)のバンク配置の詳細

バンク
0($00000) PRG $6000 #0
1($02000) PRG $6000 #1
2($04000) PRG $6000 #2
3($06000) PRG $6000 #3
4($08000) CHR #0
5($0A000) CHR #1
6($0C000) CHR #2
7($0E000) CHR #3
8($10000) 未使用(PRG $6000 #1の未パッチデータ?)
9($12000) 未使用(PRG $6000 #2の未パッチデータ?)
A($14000) 未使用(PRG $6000 #3の未パッチデータ?)
B($16000) PRG $6000
C($18000) PRG $8000
D($1A000) PRG $A000
E($1C000) 未使用(PRG $6000 #0の未パッチデータ?)
F($1E000) PRG $E000

バンク切り替えにはメモリー$7F7を使っている。
CHRには$7F7を#$4とORした値。(CHR-RAMに転送)
PRG $6000には$7F7をそのまま指定するようになっている。この処理はセットで行われます。
CHRは無駄に使用しているように見えるがシンプルなバンク切り替えコードの為にこのようになっているようです。
PRGの他の部分はAND $FFFFした値がCPUアドレスと一致するように配置されています。
意外と合理的な配置でした。
2023/07/06(木) 21:45:29.32ID:Sb6s1RC9
>>827
ミスってたorz

>>706 >>813
keiser(マッパー版SMB2J)のバンク配置の詳細

バンク
0($00000) PRG $C000 #0
1($02000) PRG $C000 #1
2($04000) PRG $C000 #2
3($06000) PRG $C000 #3
4($08000) CHR #0
5($0A000) CHR #1
6($0C000) CHR #2
7($0E000) CHR #3
8($10000) 未使用(PRG $C000 #1の未パッチデータ?)
9($12000) 未使用(PRG $C000 #2の未パッチデータ?)
A($14000) 未使用(PRG $C000 #3の未パッチデータ?)
B($16000) PRG $6000
C($18000) PRG $8000
D($1A000) PRG $A000
E($1C000) 未使用(PRG $C000 #0の未パッチデータ?)
F($1E000) PRG $E000

バンク切り替えにはメモリー$7F7を使っている。
CHRには$7F7を#$4とORした値。(CHR-RAMに転送)
PRG $C000には$7F7をそのまま指定するようになっている。この処理はセットで行われます。
CHRは無駄に使用しているように見えるがシンプルなバンク切り替えコードの為にこのようになっているようです。
PRGの他の部分はAND $FFFFした値がCPUアドレスと一致するように配置されています。
意外と合理的な配置でした。
2023/07/06(木) 21:58:38.46ID:Sb6s1RC9
そういばMMC3(マッパー4)版では、

PRGバンク
0($0000) PRG $6000(PRG-RAM)
1($2000) PRG $8000
2($4000) PRG $C000 #0
3($6000) PRG $C000 #1
4($8000) PRG $C000 #2
5($A000) PRG $C000 #3
6($C000) PRG $A000
7($E000) PRG $E000

CHRバンク
0($0000) CHR #0
1($2000) CHR #1

という構成だった希ガス。
PRG-RAM($6000)に転送するバンクは先頭。
バンク切り替えを行う$C000はメモリ$7F7を#$2とORした値。
最終バンクはやはり$E000。
$8000と$A000は残りのバンクに昇順に配置という感じか
830名無しさん@お腹いっぱい。
垢版 |
2023/07/07(金) 00:10:03.07ID:lIZo6ub+
女装深夜徘徊してくるわ、いつものとこ(ダークウェブ)で配信するから良かったら見にきてくれ!
2023/07/07(金) 14:45:47.60ID:r6gMLgZZ
>>829
MMC3だと$C000-DFFFをバンク切り替えできるモードにした場合、
$8000-9FFFは最後から2番目のバンクに固定されるので、

PRGバンク
0($0000) PRG $6000(PRG-RAM)
1($2000) PRG $A000
2($4000) PRG $C000 #0
3($6000) PRG $C000 #1
4($8000) PRG $C000 #2
5($A000) PRG $C000 #3
6($C000) PRG $8000
7($E000) PRG $E000

CHRバンク
0($0000) CHR #0
1($2000) CHR #1

仕様上、変な配置になっているようだ
2023/07/08(土) 09:29:44.90ID:8SXy9ijt
Celeste Mario's Zap & Dash! - Hack of Super Mario Bros. [NES]
https://youtu.be/dTT8Af6t4os
833名無しさん@お腹いっぱい。
垢版 |
2023/07/09(日) 14:41:58.17ID:QbECVKa+?PLT(12060)

>>832
これは凄いな
2023/07/10(月) 08:08:21.34ID:sMr0jhEz
性自認がメスだから駅の女子トイレ使っていいか?
2023/07/10(月) 16:33:08.58ID:FAt0ygiN
マッパー142(kaiser)のIRQ Acknowledgeについて、

レジスタ$C000-$CFFFにbit0=1の値を書き込んでから、レジスタ$D000-$DFFFに何か書き込むとIRQ Acknowledgeするらしいが(VRC3ほぼ互換)、そうではなく、
レジスタ$E000-$EFFFにbit0=1かつbit4=1の値を書き込んでから、レジスタ$F000-$FFFFにbit4=1の値を書き込んむとIRQ Acknowledgeする可能性あり...
2023/07/10(月) 21:06:08.98ID:FAt0ygiN
fgsd
2023/07/10(月) 21:08:33.57ID:FAt0ygiN
>>814 >>819
パッチです。(ANNSMBとSMB2J)
見落とされていたFDS BIOS部?のコードベースの共通化しました。
2023/07/10(月) 21:09:30.49ID:FAt0ygiN
貼れない...
斧 /u/4067210.zip
2023/07/10(月) 21:22:27.68ID:FAt0ygiN
試しにマッパー142版を作ってみました。LUIGIの表示がMARIOになってしまいますが、
そこはまだ直していません。(SMB2JとANNSMB) 
エンディングの音楽はちゃんと鳴ると思います。(手抜きバンク切り替え)
動作検証用として
斧 /u/4067211.zip
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況