//www.旧型、PSP開発幼稚園.game.jp/(本館) -21ページ目

スラップファイト動くケド。

基礎知識:ええと、現在遊べる。最強のPSPでメガドラえみゅは、DGEN160であって、他のは要りません。

ってな前提で読んでくれたまえ。 ちうか、DGEN160はヨイ。DGEN150に比べて進化してる。「バーニングフォース」も案の定(ちゃんとした画面で)動くし、 「スラップファイト」が起動する。(ちゃんと動く)(「不思議ちゃん2」も起動してちゃんと動く)
SYNZさんのページ(外部サイト)
はい、おしまい。

...てな訳にいかない所が、世の中のヘンなとこ。いーや、ソレで終わりでもヨイね。十分だ。 で、ちと。書いていいのか迷う「マニアック」ねた。 あのさ、実はここ数ヶ月頭悩ましてる。「某トレジャー」の「某エリソル」ってげえむがアルんだけど。 (もちろん日本版を)起動して、ボタンを押してタイトル画面にする。で、そのままほっぽらかす。 ええと、「PCのGENS」。それから「pspDGEN160」。そして「pspSEGADRIVEA30」。 1から4まで戦闘デモがあるケド。「完璧なのは(エミュは)一つもない」。 でも、SEGADRIVEA30の3と4の戦闘デモは「不思議」でしょ?(ナゼ再現するのだ)(タブンpicodriveA12でも再現する) (SEGADRIVEでは5512必須) しかも、現在開発中の「SEGADRIVEA31」では「4の戦闘デモは、もう再現しない」。(開発中picodriveA13でも再現しない)
で、A31の話。 ええと、ちとカイゾーすると「スラップファイト」が起動する。(ついでに不思議ちゃん2も正常動作) でも、その「カイゾー」すると。他の殆どのゲームが異常動作。もしくは起動しない。 つまり「原因」が見えてきつつあるケド、対処にちと困ってるジョータイ。 ええと問題の個所は、src/cpp/memory.cppの
/* 古いタイプ*/ /* 68000 read byte[A18] */ static unsigned s68k_readbyte(unsigned a)
の関数。さしあたり、
/* 古いタイプ*/ /* 68000 read byte[A18] */ static unsigned s68k_readbyte(unsigned a) { if( a < MAX_ROM_SIZE ){ return rom[(a^1)];} else if( a > 0x00dfffff ){ return ram[(a^1)&0xffff]; } else if( a < 0x00a08000 ){ return ( z80_read((a^1)&0x7fff) ); } /*z80 shared */ else { switch((a^1)) { case 0x00c00000: case 0x00c00001: return vdp_readbyte(); case 0x00c00004: //coo4 ^= 0x03; return coo4; case 0x00c00005: //return vdp_status | (pal_mode? 1 : 0); return (md_vdp_ctrl_r()); case 0x00c00008: return calc_HVC_high(); case 0x00c00009: return calc_HVC_low(); case 0x00a11100: return z80_online; case 0x00a11000: case 0x00a11001: case 0x00a11200: case 0x00a11201: return 0xFF; case 0x00a130f1: return save_active | save_prot; } if(0x00a10000==((a^1)&0x00FFFFe0)) /* 0xa10000-0xa1001f */ { switch((a^1)&0x1e){ case (0x00<&lt1): return read_country_ver(); case (0x01<&lt1): return read_joypad1(); default: return 0xff; } } } return 0x00; }
ってな感じで起動してた気がする。が、ここはカナリアヤシーな現状。他との兼ね合いもあるから、 「SEGADRIVEA30」で実験可能かどうかワカラン。(が、タブン大丈夫な気がスル...) (「SLAP_A31PSD.zip」で別館にバイナリUP。一応)
(2006-06/18、08:19)


■上の奴良く見りゃ、論点は一ヶ所じゃねーか。うううう、朝はやっぱし「寝ぼけてたんだ」な。つまり、
#if 00 /* slap fight / fushigi-2 */ else if( a < 0x00a08000 ){ return ( z80_read((a^1)&0x7fff) ); } /*z80 shared */ #else /* others */ else if( a < 0x00a08000 ){ return ( z80_read((a )&0x7fff) ); } /*z80 shared */ #endif
ちう事。それ以外は「同じ」。 (2006-06/18、13:39)
↑間違い。現在検討中。(2006-06/19、07:18)
で、スラップファイトに関しては(問題点は)ここらしい。(不思議ちゃん2は除く)
static unsigned s68k_readbyte(unsigned addr ) { <中略> switch( addr ) { <中略> #if 00 case 0x00a11100: return z80_online;/* others */ #else case 0x00a11101: return z80_online;/* slapfight? */ #endif
で、これを両方つければ、両方駄目。どっちか片方のみ(エリソルとかヘッディーとか立ち上がらなくなる)。 これはm68000のバイトアクセス。(s68k_readbyte) で、m68000のワードアクセス(s68k_readword)で、フックしてみた。が、うまくいかない。む~ん。 (2006-06/19、10:18) 「picodrive」の該当部分眺めてみたけど、bus_ackとか結構めんどい事してるな。実機のz80_resetとかさ。 (SEGADRIVEで)何処まで手を染めるかまではワカンナイ。ちうか計画中。ちうか要調査だな。 (2006-06/19、20:08)

■さてと、やっとアソブ時間が取れた♪ え?何がって、もちろん「スラップファイト@縦画面モード」にキマッテルじゃん。何の為に対応させて、 別館にアルと思ってるの?「アソブ為でし!」理屈はど~でもイイから、アソブあそぶ♭ で、やってみた。 設定はFSKIP60、SCREENMODE:Minios(B)、padmode:allow-button(XY)、ScreenSwap:ON、5512、 オーソドックスな縦画面の設定だな。 やる前から想像がついていたが、やはりスラップファイトは、グラディウスと違って、ゲージが見えないと、 何取って良いのかワカンナクて辛い。ちうか間違える。グラで間違えてダブル取ったってバリア取ったって、 大勢には影響がないが、スラップファイトは間違えると、ううう結構辛い物があるよな。 ちうかそれ以前に、難しいゲームなんで、スピード以外たいして役に立たんから、何とっても同じって説もあるが、 やっぱり「まにあ」は「レーザー促成栽培」がやりたいんじゃい。(ううう、どれだけの人が知ってるやら...) レーザー狙って取るには、やはりしゅぎょーがひつよー。 ムムム難しい。難しいっ。難しいつつつ! でもデモ「縦画面」やっぱ作っといて良かった♪ デモ~。難しい! (ムズイ、2006-06/18、20:54) まず「すくろーる」が波打つのが「イライラ」する。(22050とかにしたほーがいいかも) ううう、それから「PSPの持ち方」にも多少工夫が必要だよ。 ええと左手は方向キーだから、そのままでイイんだけど、 (「解説そのままとは...」: 「左手の一指し指は、PSP横のUSBポートのあたり。」 「連射用に左手の腹でLキー押しっぱなし。」 「中指はPSP背面ロゴのSのあたり。」 「薬指と小指は曲げて手前、magicgateのロゴ近くに。」 これで、左手のみで完全にPSPを固定できると思う) さて問題は「右手」。 ええと、中指から小指まで、を折り曲げて第一間接でPSPが落ちないように引っ掛ける。(Lキーの腹押しとで挟む) 一指し指は軽く横(ほんの少し上)にそえる。 つまり立体的に、左手が下。右手が上。ホンの少しだが。 このポジションじゃないとスラップファイトは辛いよーな気がする。 (ムズズズ~イ、2006-06/18、21:05) そうそう本日の結言だったな。エエト... スラップファイト動くケド。むずくてあそべねえ はあ...