謎物体　その９b

SDL(http://www.libsdl.org/download-1.2.php) をげっとしれ
EBOOT.PBPを所定のフォルダに入れて実行しれ
EBOOT.PBPを実行ファイルまたはショートカットにドラッグ＆ドロップしてもいける

EBOOT.PBPを指定しなければメニューがでるっす
所定のフォルダにあるEBOOT.PBPを↑↓で選んでEnterで決定するっす

実行ファイルのあるフォルダにms0\PSP\GAMEつーフォルダを掘って、
そん中にさらにソフトごとにフォルダを作ってEBOOT.PBPを入れれ

メニュー背景画像は480x272x24bitのPNGまたはBMPで差し替えできます。

pspe.exe
SDL.dll
MENU.png(bmp)
ms0
 +--PSP
     +--GAME
         +--SOFT1
         |    +-- EBOOT.PBP
         +--SOFT2
              +-- EBOOT.PBP
         

　↑　　　↑　
←　→　←　→
　↓　　　↓　

　△　　 w
□　○　a d
　×　　 s

START  F1
SELECT F2

左トリガ 左SHIFT
右トリガ 右SHIFT

F12    スクリーンショット
ESC    メニューに戻る/終了


あとメニューの文字にナガ10半角を使ってます。実機にあわせるには8x16の文字とかでもよかったんだけど探すのがマンドクサかったので。
メニューの背景画像はあぷろだからちょっぱりました。
------
開発者向けデバック出力機能

int pspeDebugWrite(const char* str,size_t length);

	STUB_START	"pspeDebug",0x40010000,0x00010005 
	STUB_FUNC	0xDEADBEAF pspeDebugWrite
	STUB_END

注：これをリンクしたまま実機で動かすと起動しないので注意。
実機にコピーする前に再コンパイルしれ。

-------
PSPで自作できるようになったけどもれのは1.5のため実行できないので欝。
しょうがないので実行テスト環境を作ることにした。
けど1.0手に入れたにょ。開発速度が進むか、他の作業(PSP用ソフト開発)で遅れるかは気分しだい。

某ソフトを移植中にコレで動いて実機で動かない現象に遭遇。printfで追っかけるとどうもunaligned accessくさい
というわけでunaligned accessチェックをつけた

------
履歴

その９b   その９の中身が８でつた。スマ
その９    MENUのfontをM+ font 12dotに変更
          sceKernelLibcClockとsceCtrlReadのクロック値を修正
その８    Lseek等のBIOS修正
          開発者用デバッグ出力追加
          BIOS LOGを分けた
その７    SNES9xが動いたもにょん
          メモリ周りの恥ずかしいバグをFIX
          BIOSをfix
その６    時間関連の関数がついた
          メニューに背景画像がついた
その５    メニューでアイコンとタイトルを表示するようになった
          HOME/電源対応のソフトに暫定対応
その４    メニューをつけた
          EBOOT.PBPがEBOOT.PBPだった恥ずかしい間違いをなおした
その３    ＧＢえみゅがうごくようになったもよん　ついでにスクリーンショットつけた
その２b   ボタン割り当てがドキュメントと食い違ってたので直した
その２    PBPヘッダのバージョンチェックをしないようにした。
謎        とりあえずHelloが動いた

----
get SDL from http://www.libsdl.org/download-1.2.php
put EBOOT.PBP on special folder and execute.
or Drag & Drop EBOOT.PBP to executable or shotcut

if you don't drag'drop, menu appear.
select EBOOT.PBP in special folder (see below).
select upper and down allow and Enter.

create ms0\PSP\GAME folder under executable folder
make directory for each software and put EBOOT.PBP in it.

pspe.exe
SDL.dll
MENU.png(or bmp)
ms0
 +--PSP
     +--GAME
         +--SOFT1
         |    +-- EBOOT.PBP
         +--SOFT2
              +-- EBOOT.PBP

UP    UP
DOWN  DOWN
LEFT  LEFT
RIGHT RIGHT 

  /\   w
[] O  a d
  X    s

START  F1
SELECT F2

LTRIGGER LSHIFT
RTRIGGER RSHIFT

F12	Screenshot
ESC	Back to menu/End

optinal command line
 -l 
 -b dump bios call (except periodic function)
 -b2 dump all bios call
 -a dump disassembler
 [file] filename (default EBOOT.PBP)

loadable format is pbp and psp(elf)

periodic function:
 sceDisplayWaitVblankStart
 sceDisplaySetFrameBuf
 sceCtrlRead
 sceKernelLibcGettimeofday

note: sceKernelLibcGettimeofday is 1 second resolution on this version. usec is allways 0.

------
debug output (for developper)

int pspeDebugWrite(const char* str,size_t length);

	STUB_START	"pspeDebug",0x40010000,0x00010005 
	STUB_FUNC	0xDEADBEAF pspeDebugWrite
	STUB_END

note: if you run program linked with this function on real psp , it can't run.
before you copy on memory stick, need recompile.
-----
changelog

0.9b 0.9 acrhive includes 0.8 binary.
0.9  change menu font
     fix sceKernelLibcClock and sceCtrlRead clock tick
0.8  bios fix (Lseek etc)
     add debug output for developper
0.7  memoy bug fix
     some bios function fix
     SNES9x work fine
0.6  add time/date functions
     add background image in menu

