|
Post by elmer on Oct 7, 2021 14:41:08 GMT
The game itself is split into various different code overlays, and only two of them actually contain the script interpreter, the others are for displaying cutscenes and for the sideways battle screen that stores its text differently. Here is the inner loop of the script interpreter, which interleaves reading text strings with script code. This script interpreter is called either by other scripts, or by events that are triggered by the low level code that handles movement/collision/timer processing. You'll see that I have figured-out what less-than-half of the script codes actually do, but that still seems like it is enough to decompile/translate/recompile the game's individual scripts ... although actually expanding the scripts in order to provide memory for a more-verbose English translation is a different problem. ============================================================================== ANEARTH - CODE OVERLAY : GAME CODE : Execute Script until it ends ==============================================================================
($8964 in Main Menu)
$8bbe lda $29cd ; do we want a chunk?
_exec_script_function:
($8804 in Main Menu)
$8a58 lda #$b4 ; Reset _script_sp sta $70 lda #$29 sta $71
lda $2e8f ; _msg_speed ($00=fast, $04=normal) sta $64 ; _pen_delay stz $6f ; _pen_flg
lda #$ff ; _msg_delay ($FF is disabled, set by script code $254B) sta $2e81
_exec_script_loop:
$8a6c bbs5 $a8,$8acd lda #$02 tsb $6f
($881F in Main Menu, calls $6de9)
$8a73 jsr $7044 ; _print_script_string
lda ($60) ; byte 0 == 0 -> return beq $8a9d ; else throw it away
$8a7a ldy #$01 ; @$8826 in MAIN : execute script code, not text lda ($60),y
cmp #$ff ; but not code $FE or $FF beq $8a9d cmp #$fe beq $8a9d
asl ; 2 * code_number tax
clc ; _script_ptr += 2 lda $60 $8a8b adc #$02 ; @$8837 in MAIN : sta $60 cla adc $61 sta $61
lda #$8a ; return address = $8a6c pha lda #$6b pha
jmp ($8ad7,x) ; execute script code
; ; Looks like $70 is a script stack ;
_script_return:
$8a9d jsr $8bb3 ; cmp.w $70,#$29b4 beq $8acd
sec ; pop from _script_sp lda $70 sbc #$03 sta $70 lda $71 sbc #$00 sta $71 cly lda ($70),y ; Restore _script_chunk sta $29cd iny lda ($70),y ; Restore _script_pc sta $60 iny lda ($70),y sta $61 $8abf jsr $8bbe ; _decompress_data_chunk jsr $8bb3 ; cmp.w $70,#$29b4 bne $8a6c
$8ac7 lda #$04 trb $6f bra $8a6c
$8acd lda #$04 ; the script is finished trb $6f
lda #$ff ; _msg_delay ($FF is disabled, set by script code $254B) sta $2e81 $8ad6 rts
110 decimal different script codes
($8883 in Main Menu)
$8ad7 dw $8ad7 ($8883) ; $2500 HANG!!! $8ad9 dw $8ad9 ($8885) ; $2501 HANG!!! $8adb dw $8adb ($8887) ; $2502 HANG!!! $8add dw $8add ($8889) ; $2503 HANG!!! (icon) $8adf dw $8adf ($888b) ; $2504 HANG!!! $8ae1 dw $8ae1 ($888d) ; $2505 HANG!!! $8ae3 dw $8d0a ($8ab0) ; $2506 +6 _msg_box ( param, param, param, param, param, param ) $8ae5 dw $8d1b ($8ac1) ; $2507 +0 _clr_A9_bit7 ( ) $8ae7 dw $8d20 ($8ac6) ; $2508 +0 _tst_2E82_set_A9_bit7 ( ) $8ae9 dw $8d2b ($8ad1) ; $2509 +2 _jump ( chunk, script ) $8aeb dw $8d2f ($8ad5) ; $250A +2 _call ( chunk, script ) $8aed dw $8d57 ($8afd) ; $250B +3 _jump_random ( val, chunk, script ) $8aef dw $8d72 ($8b18) ; $250C +3 _jump_num_times ( val, script, tmp ) $8af1 dw $8d8f ($8b35) ; $250D +3 _jump_if_btn ( mask, chunk, script ) $8af3 dw $8dac ($8b52) ; $250E +0 _remove_msg_box ( ) $8af5 dw $8dc3 ($8b69) ; $250F +0 _screen_off ( ) $8af7 dw $8dc7 ($8b6d) ; $2510 +0 _screen_on ( ) $8af9 dw $8dcb ($8b71) ; $2511 +0 _clr_A8_bit0 ( ) $8afb dw $8dd0 ($8b76) ; $2512 +0 _set_A8_bit0 ( ) $8afd dw $8dd5 ($8b7b) ; $2513 +4 _code2513 ( param, param, param, param ) $8aff dw $8ec7 ($8c6d) ; $2514 +3 _wait ( param, word_param ) $8b01 dw $8f28 ($8cce) ; $2515 +2 UNUSED _code2515 ( n_lo, n_hi ) $8b03 dw $8f5a ($8d00) ; $2516 +0 UNUSED _code2516 ( ) $8b05 dw $8f61 ($8d07) ; $2517 +n _code2517 ( word_params ... $0000 ) $8b07 dw $8f8d ($8d33) ; $2518 +n _code2518 ( word_params ... $0000 ) $8b09 dw $8fae ($8d54) ; $2519 +n _code2519 ( chunk, script, [ param_lo, param_hi ]+, $0000 $8b0b dw $8fda ($8d80) ; $251A +n _code251A ( chunk, script, [ param_lo, param_hi ]+, $0000 $8b0d dw $8ff6 ($8d9c) ; $251B +n _set_flags ( [ flag ]+, $00 ) $8b0f dw $900e ($8db4) ; $251C +n _clr_flags ( [ flag ]+, $00 ) $8b11 dw $9026 ($8dcc) ; $251D +n _jump_if_all_flags_set ( chunk, script, [ flag ]+, $00 ) $8b13 dw $904a ($8df0) ; $251E +n _jump_if_any_flag_set ( chunk, script, [ flag ]+, $00 ) $8b15 dw $9067 ($8e0d) ; $251F +n _jump_if_own ( chunk, script, [ item ]+, $FF ) $8b17 dw $9087 ($8e2d) ; $2520 +3 _add_item_jump_if_max ( chunk, script, item ) $8b19 dw $909f ($8e45) ; $2521 +1 _decrement_item ( item ) $8b1b dw $90af ($8e55) ; $2522 +5 _jump_if_equipped ( chunk, script, member, eqpslot, item ) $8b1d dw $90c7 ($8e6d) ; $2523 +3 _equip_item_in_slot ( member, eqpslot, item ) $8b1f dw $90f3 ($8e99) ; $2524 +4 _uneqip_item_jump_if_max ( chunk, script, member, eqpslot ) $8b21 dw $9131 ($8ed7) ; $2525 +4 _jump_if_slot_in_use ( chunk, script, member, eqpslot ) $8b23 dw $9145 ($8eeb) ; $2526 +1 _add_party_member ( member ) $8b25 dw $915e ($8f04) ; $2527 +1 _remove_party_member ( member ) $8b27 dw $9177 ($8f1d) ; $2528 +n _jump_if_in_party ( chunk, script, [ member ]+, $FF ) $8b29 dw $919f ($8f45) ; $2529 +4 _load_level ( param, param, param, param ) $8b2b dw $91dd ($8f87) ; $252A +3 _load_data ( param, param, param ) $8b2d dw $9204 ($8fae) ; $252B +6 _script_code_2b_unknown ( param, param, param, param, param, param ) $8b2f dw $9209 ($8fb3) ; $252C +6 _script_code_2c_unknown ( param, param, param, param, param, param ) $8b31 dw $9211 ($8fbb) ; $252D +n _script_code_2d_too_complex ( param1, param2, param3, param4, + param * (param3*param4*2) ) $8b33 dw $9252 ($8ffc) ; $252E +n _script_code_2e_unknown ( param, [ param, param ]+, $FF ) $8b35 dw $929c ($9046) ; $252F +1 _script_code_2f_unknown ( param ) $8b37 dw $92c4 ($906e) ; $2530 +1 _script_code_30_unknown ( param ) $8b39 dw $92cd ($9077) ; $2531 +0 _script_code_31_unknown ( ) $8b3b dw $934f ($90f9) ; $2532 +2 _script_code_32_unknown ( param, actor ) $8b3d dw $93b2 ($915c) ; $2533 +2 _script_code_33_unknown ( param, param ) $8b3f dw $93bb ($9165) ; $2534 +n _script_code_34_unknown ( word_param, [ param ]+, $FF ) $8b41 dw $9408 ($91b2) ; $2535 +3 _npc_params ( actor, addr_in_bank_6A ) $8b43 dw $9471 ($921b) ; $2536 +n _script_code_36_unknown ( [ actor ]+, $FF ) N.B. Refers to $23af as holding script bank $8b45 dw $94a2 ($924c) ; $2537 +2 _npc_sprite ( param, actor ) $8b47 dw $94d4 ($927e) ; $2538 +n _script_code_38_unknown ( actor, [ param, param ]+, $FF ) $8b49 dw $955a ($9304) ; $2539 +2 _fade_up_except ( mask, mask ) $8b4b dw $95d6 ($9380) ; $253A +2 _fade_down_except ( mask, mask ) $8b4d dw $969f ($9435) ; $253B +1 _script_code_3b_unknown ( param ) $8b4f dw $96f4 ($9480) ; $253C +1 _jump_if_facing ( param, chunk, script ) $8b51 dw $9707 ($9493) ; $253D +1 _script_code_3d_unknown ( param )
$8b53 dw $9779 ($94fb) ; $253E +1 _script_code_3e_unknown ( param ) $8b55 dw $9784 ($9506) ; $253F +2 _script_code_3f_unknown ( param, param ) $8b57 dw $9795 ($9517) ; $2540 +4 _script_code_40_unknown ( chunk, script, param, param )
$8b59 dw $97a9 ($952b) ; $2541 +1 _script_code_41_unknown ( param ) $8b5b dw $97b4 ($9536) ; $2542 +2 _script_code_42_unknown ( param, param ) $8b5d dw $97c5 ($9547) ; $2543 +4 _script_code_43_unknown ( param, param, param, param )
$8b5f dw $97e1 ($9563) ; $2544 +1 _cd_play ( param ) $8b61 dw $97ef ($9571) ; $2545 +0 _cd_pause ( ) $8b63 dw $97fb ($957d) ; $2546 +2 _cd_fade ( param, param ) $8b65 dw $9809 ($958b) ; $2547 +2 _cd_fade2547 ( param, param ) $8b67 dw $9863 ($95e5) ; $2548 +0 _script_code_48_unknown ( ) $8b69 dw $9871 ($95f3) ; $2549 +1 _sound_effect ( param ) $8b6b dw $987a ($95fc) ; $254A +0 _script_code_4a_unknown ( ) $8b6d dw $9880 ($9602) ; $254B +1 _script_code_4b_unknown ( param ) $8b6f dw $988a ($960c) ; $254C +5 _ad_play ( lba_h, lba_m, lba_l, param, len_l ) $8b71 dw $98ec ($966e) ; $254D +0 _ad_stat ( ) $8b73 dw $98f8 ($967a) ; $254E +0 _ad_stop ( ) $8b75 dw $9901 ($9683) ; $254F +1 _script_code_4f_unknown ( param ) INVESTIGATE $8b77 dw $990a ($968c) ; $2550 +3 _fight_battle ( battle, chunk, script ) $8b79 dw $9920 ($96a2) ; $2551 +0 _view_world_map ( ) $8b7b dw $8b7b ($8927) ; $2552 HANG!!! $8b7d dw $9937 ($96b9) ; $2553 +2 _add_cash ( word_param ) $8b7f dw $997a ($96fc) ; $2554 +4 _pay_cash_jump_if_fail ( chunk, script, word_param ) $8b81 dw $99ad ($972f) ; $2555 +3 _script_code_55_unknown ( param, param, param ) $8b83 dw $9a81 ($9803) ; $2556 +6 _script_code_56_choose ( chunk, script, param, param, max_x, max_y, param * (4*(max_x+1)*(max_y+1))) $8b85 dw $9ad6 ($9858) ; $2557 +n _script_code_57_chosen ( [ chunk, script ]+ <- repeated pairs, no end marker ) $8b87 dw $9ade ($9860) ; $2558 +2 _script_code_58_unknown ( param, param ) $8b89 dw $9af6 ($9878) ; $2559 +2 _script_code_59_unknown ( param, param ) $8b8b dw $9b38 ($98ba) ; $255A +0 _script_code_5a_unknown ( ) $8b8d dw $9b3c ($98be) ; $255B +6 _script_code_5b_portrait ( param, param, param, word_param, param ) $8b8f dw $9b44 ($98c6) ; $255C +n _script_code_5c_unknown ( chunk, script, [ param ]+, $FF ) $8b91 dw $9b5b ($98dd) ; $255D +3 _script_code_5d_unknown ( actor, param, param ) $8b93 dw $9b8e ($9910) ; $255E +1 _script_code_5e_decompress_asset ( param ) INVESTIGATE $8b95 dw $9bc3 ($9945) ; $255F +n _script_code_5f_tii ( off_lo, off_hi, len_lo, len_hi, length * param ) $8b97 dw $9c05 ($9987) ; $2560 +0 _script_code_60_unknown ( ) $8b99 dw $9c09 ($998b) ; $2561 +n _script_code_61_unknown ( param, [ param, param ]+, $FF ) $8b9b dw $9c2f ($99b1) ; $2562 +n _script_code_62_unknown ( actor, [ addr_lo, addr_hi ]+, $FF ) $8b9d dw $9cb1 ($9a33) ; $2563 +0 _script_code_63_unknown ( ) $8b9f dw $8b9f ($894b) ; $2564 HANG!!! $8ba1 dw $9cb5 ($9a37) ; $2565 +1 _script_code_65_unknown ( param )
GAME CODE VERSIONS ...
$8ba3 dw $9cc9 ($9a4b) ; $2566 +0 _goto_save_screen ( ) $8ba5 dw $9d26 ($9a4b) ; $2567 +0 _goto_load_screen ( ) $8ba7 dw $8ba7 ($8953) ; $2568 HANG!!! $8ba9 dw $8ba9 ($9a4b) ; $2569 HANG!!! (text) $8bab dw $8bab ($9a55) ; $256A HANG!!! $8bad dw $9d2f ; $256B +2 _script_code_6b_unknown ( param, param ) $8baf dw $9d5f ; $256C +4 _script_code_6c_unknown ( param, param, param, param ) $8bb1 dw $9dab ; $256D +1 _script_code_6d_unknown ( param )
MAIN MENU CHANGES ...
$894f dw $9cc9 ($9a4b) ; $2566 +1 _script_code_66_unknown ( ) $8951 dw $9d26 ($9a4b) ; $2567 +1 _script_code_67_unknown ( ) $8953 dw $8ba7 ($8953) ; $2568 HANG!!! $8955 dw $8ba9 ($9a4b) ; $2569 +1 _script_code_69_unknown ( ) $8957 dw $8bab ($9a55) ; $256A +1 _script_code_6a_bios_ad_play ( ) ----- dw $9d2f ; $256B -- REMOVED!!! ----- dw $9d5f ; $256C -- REMOVED!!! ----- dw $9dab ; $256D -- REMOVED!!!
|
|
|
Post by elmer on Oct 7, 2021 14:43:01 GMT
All of the above knowledge, incomplete as it is, leads to a single decompiled script chunk that looks like this (and there are hundreds of these compressed chunks in the game) ...
; ; Anearth Fantasy Stories : game06 chunk04 ;
@translate( no ) @scriptcount( 60 )
.script001: _end()
.script002: _set_flags( .flag1, 0 ) _code253D( $00 ) _screen_on() _call( .chunk01, .script007 ) _pen_color( GREEN ) {SAVE}* _pen_color( WHITE ) {ここまでの状況を記録してください} _wait_for_keypress_then_clr() _code2555( $00, $09, $7F ) _code2555( $00, $09, $7F ) _code2555( $00, $09, $7F ) _code2555( $00, $09, $7F ) _code2555( $00, $09, $7F ) _code2555( $00, $09, $7F ) _code2555( $00, $09, $06 ) _code2555( $00, $0B, $7F ) _code2555( $00, $0B, $7F ) _code2555( $00, $0B, $7F ) _code2555( $00, $0B, $7F ) _code2555( $00, $0B, $68 ) _code2555( $00, $0F, $7F ) _code2555( $00, $0F, $7F ) _code2555( $00, $0F, $66 ) _code2555( $00, $13, $7F ) _code2555( $00, $13, $7F ) _code2555( $00, $13, $66 ) _code2555( $00, $22, $64 ) _code2555( $00, $22, $64 ) _code2555( $00, $26, $64 ) _code2555( $00, $26, $64 ) _code2555( $00, $26, $64 ) _code2555( $00, $2A, $64 ) _code2555( $00, $2A, $64 ) _code2555( $00, $2E, $64 ) _code2555( $00, $2E, $64 ) _code2555( $00, $32, $64 ) _code2555( $00, $32, $64 ) _code2555( $00, $36, $64 ) _code2555( $00, $36, $64 ) _code2555( $00, $3A, $64 ) _code2555( $00, $3A, $64 ) _code2555( $00, $3E, $64 ) _code2555( $00, $3E, $64 ) _code2555( $00, $42, $64 ) _code2555( $00, $42, $64 ) _code2555( $00, $46, $64 ) _code2555( $00, $46, $64 ) _code256B( $00, $FF ) _equip_item_in_slot( PLAYER, .eqpslot1, .item120 ) ; {ローブ} [Robe] _decrement_item( .item119 ) ; {布服} [Clothes] _goto_save_screen()
.script003: _code253D( $00 ) _screen_on() _call( .chunk01, .script003 ) _pen_delay( 255 ) _msg_delay( 255 ) _pen_color( WHITE ) {そして‥さらに5年の歳月が流れ}* _player_name( YELLOW ) _align_8pxl() {が}* {15歳に成長したある日‥‥}* {重大な転機となる出来事が起こった} _wait_for_keypress_then_clr() _remove_msg_box() _set_A8_bit0() _load_data( $00, $21, $2C ) _npc_params( .actor12, $D96A ) _npc_params( .actor13, $D970 ) _npc_params( .actor14, $D976 ) _npc_params( .actor15, $D97C ) _npc_params( .actor16, $D982 ) _npc_params( .actor17, $D988 ) _code255D( .actor11, $21, $36 ) _code255D( .actor12, $20, $37 ) _code255D( .actor13, $22, $37 ) _code255D( .actor14, $20, $38 ) _code255D( .actor15, $22, $38 ) _code255D( .actor16, $20, $39 ) _code255D( .actor17, $22, $39 ) _remove_msg_box() _code253D( $00 ) _screen_on() _fade_up_except( .mask00, .mask08 ) _code2538( .actor11, $21, $2C, $FF ) _wait( .flag1, 60 ) _npc_sprite( $03, .actor11 ) _wait( .flag1, 8 ) _npc_sprite( $01, .actor11 ) _wait( .flag1, 30 ) _call( .chunk01, .script004 ) _call( .chunk00, .script004 ) {我々‥オルトナッシュ布教団は}* {本日ただ今より‥}* {ヤレムにおける布教活動を開始する} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {わかっていると思うが}* {信者獲得は教祖様の至上命令であり人々の自由意志を尊重し布教を行う} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {では‥‥} _wait( .flag0, 60 ) {始めましょう} _wait_for_keypress_then_clr() _remove_msg_box() _fade_down_except( .mask00, .mask08 ) _npc_params( .actor12, $D961 ) _npc_params( .actor13, $D961 ) _npc_params( .actor14, $D961 ) _npc_params( .actor15, $D961 ) _npc_params( .actor16, $D961 ) _npc_params( .actor17, $D961 ) _code255D( .actor11, $21, $13 ) _code255D( .actor12, $1F, $12 ) _code255D( .actor13, $20, $12 ) _code255D( .actor14, $22, $12 ) _code255D( .actor15, $23, $12 ) _code255D( .actor16, $10, $10 ) _code255D( .actor17, $12, $10 ) _npc_sprite( $01, .actor11 ) _npc_sprite( $01, .actor12 ) _npc_sprite( $01, .actor13 ) _npc_sprite( $01, .actor14 ) _npc_sprite( $01, .actor15 ) _npc_sprite( $01, .actor16 ) _npc_sprite( $01, .actor17 ) _load_data( $15, $0C, $08 ) _play_music( $86 ) ; CD-Audio track 6. _code2565( $01 ) _code255D( .actor0, $0C, $09 ) _npc_params( .actor0, $DA2D ) _code2517( $0002, $0000 ) _code252F( $02 ) _remove_msg_box() _code253D( $00 ) _screen_on() _fade_up_except( .mask00, .mask08 ) _npc_params( .actor0, $DA35 ) _wait( .flag1, 304 ) _npc_params( .actor0, $DA31 ) _clr_A8_bit0() _wait( .flag1, 60 ) _movement_speed( .speed0 ) _code2561( $00, $02, $01, $FF ) _code252F( $01 ) _code2518( $0002, $0000 ) _movement_speed( .speed1 ) _set_flags( .flag16, 0 ) _code2517( $01af, $0000 ) _end()
.script004: _pen_delay( 0 ) _msg_delay( 255 ) _pen_color( YELLOW ) {オルトナッシュ上級信者}* _pen_color( WHITE ) _pen_delay( 255 ) _msg_delay( 6 ) _end()
.script005: _pen_delay( 0 ) _msg_delay( 255 ) _pen_color( YELLOW ) {オルトナッシュ一般信者}* _pen_color( WHITE ) _pen_delay( 255 ) _msg_delay( 6 ) _end()
.script006: _play_music( $86 ) ; CD-Audio track 6. _code2518( $000b, $0000 ) _remove_msg_box() _code253D( $00 ) _screen_on() _fade_up_except( .mask00, .mask00 ) _end()
.script007: _call( .chunk01, .script007 ) _pen_color( GREEN ) {NOTE}* _pen_color( WHITE ) {グレゴリー爺さんからの書き置き} _wait_for_keypress_then_clr() _remove_msg_box() _call( .chunk01, .script004 ) _pen_color( YELLOW ) _player_name( YELLOW ) _align_8pxl() {へ}* _pen_color( WHITE ) {わしは‥ちょいと出かけてくるよ}* {今日は占いで} _pen_color( RED ) { 凶} _pen_color( WHITE ) {と出ておるから}* {あまり外へ出歩かぬようにな} _wait_for_keypress_then_clr() {そうそう}* {チャックは‥わしが連れて行くからひとりで勉強でもしてなさい}* _pen_color( YELLOW ) { 恋しい爺ちゃんより} _wait_for_keypress_then_clr() _end()
.script008: _call( .chunk01, .script005 ) _call( .chunk01, .script115 ) {おまえは}* {外へ行ってなさい} _end()
.script009: _end()
.script010: .script011: _call( .chunk00, .script014 ) _call( .chunk01, .script003 ) {ごめんなさ~い}* {今日はお休みしま~す}* _eol() _pen_color( YELLOW ) { -防具屋-} _end()
.script012: _call( .chunk00, .script014 ) _call( .chunk01, .script003 ) {お客さま‥申し訳ありません}* {本日は休みとさせていただきます}* _eol() _pen_color( YELLOW ) { -武器屋-} _end()
.script013: _call( .chunk00, .script014 ) _call( .chunk01, .script003 ) {またのご来店を}* {お待ちいたしております}* _eol() _pen_color( YELLOW ) { -道具屋-} _end()
.script014: _call( .chunk01, .script007 ) _pen_color( GREEN ) {NOTICE}* _pen_color( WHITE ) {ドアに張り紙が張ってある!} _wait_for_keypress_then_clr() _end()
.script015: _code2513( $01, $00, $04, $00 ) _jump( .chunk00, .script017 )
.script016: _code2513( $01, $00, $02, $00 )
.script017: _jump_if_facing( UP, .chunk00, .script019 ) _jump_if_facing( RIGHT, .chunk00, .script018 ) _code2513( $02, $00, $04, $00 ) _jump( .chunk00, .script019 )
.script018: _code2513( $03, $00, $04, $00 )
.script019: _call( .chunk01, .script003 ) _call( .chunk00, .script004 ) {みなさん}* {よくお集まりいただきました} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {今日は‥みなさんに}* _pen_color( GREEN ) {救世の祈り } _pen_color( WHITE ) {オルトナッシュの}* {すばらしさを理解していただきます} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {そも‥人とはいかに生きるべきか!古い慣習や しきたりに縛られ}* {心の自由を奪われてはいないか!?} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {この世紀末に予言されている}* _pen_color( GREEN ) {滅びの獣} _pen_color( WHITE ) {の復活を阻止すべく}* {救世主が再臨なされました} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {オルトナッシュ教祖にして}* {我らが教皇であらせられる}* _pen_color( GREEN ) {ヴェルメッサ} _pen_color( WHITE ) {様でございます} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {教祖様はエイナス世界の救世主}* {ラザレスの生まれ変わりであり}* {幼い姿のまま歳をとりません!} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {みなさん!} _wait_for_keypress_then_clr() _call( .chunk00, .script004 ) {我らの祈りの力を結集し}* {この世界を救うのです!!} _wait_for_keypress_then_clr() _remove_msg_box() _code2513( $00, $00, $06, $00 ) _npc_sprite( $02, .actor11 ) _wait( .flag1, 8 ) _code2562( .actor11, $00, $05, $FF ) _npc_sprite( $03, .actor11 ) _wait( .flag1, 8 ) _npc_sprite( $01, .actor11 ) _wait( .flag1, 30 ) _remove_msg_box() _call( .chunk00, .script004 ) {さあ‥我らと共に}* {救世の一助たらんと望む方は}* {こちらへいらしてください} _wait_for_keypress_then_clr() _remove_msg_box() _wait( .flag1, 30 ) _npc_sprite( $02, .actor11 ) _wait( .flag1, 8 ) _npc_sprite( $00, .actor11 ) _wait( .flag1, 30 ) _code2518( $01cc, $0000 ) _play_sound( 20 ) _code2562( .actor11, $00, $01, $FF ) _code2518( $01d6, $0000 ) _npc_params( .actor13, $D98E ) _wait( .flag1, 32 ) _npc_params( .actor14, $D98E ) _wait( .flag1, 16 ) _npc_params( .actor12, $D98E ) _wait( .flag1, 32 ) _npc_params( .actor15, $D98E ) _code2533( $01, $0D ) _code2518( $01d8, $0000 ) _code2533( $01, $0E ) _code2518( $01d9, $0000 ) _code2533( $01, $0C ) _code2518( $01d7, $0000 ) _code2533( $01, $0F ) _code2518( $01da, $0000 ) _wait( .flag1, 30 ) _code2513( $01, $00, $06, $00 ) _wait( .flag1, 30 ) _code2562( .actor5, $02, $04, $FF ) _npc_sprite( $00, .actor5 ) _remove_msg_box() _call( .chunk01, .script003 ) _call( .chunk06, .script048 ) {よぉし‥俺はいくぞ!!} _wait_for_keypress_then_clr() _remove_msg_box() _code2513( $00, $00, $06, $00 ) _npc_params( .actor4, $D922 ) _npc_params( .actor6, $D934 ) _npc_params( .actor7, $D934 ) _npc_params( .actor8, $D946 ) _npc_params( .actor9, $D946 ) _npc_params( .actor10, $D958 ) _code2562( .actor5, $00, $08, $FF ) _code2518( $01dd, $0000 ) _wait( .flag1, 30 ) _code2531() _code2518( $01d2, $0000 ) _code2517( $0006, $0000 ) _set_flags( .flag17, 0 ) _end()
.script020: _end()
.script021: _end()
.script022: _jump_if_all_flags_set( .chunk00, .script001, .flag20, 0 ) _jump_if_facing( RIGHT, .chunk00, .script023 ) _npc_params( .actor24, $D9BB ) _code2538( .actor24, $34, $11, $FF ) _npc_sprite( $02, .actor24 ) _jump( .chunk00, .script024 )
.script023: _npc_params( .actor24, $D9E3 ) _wait( .flag1, 8 ) _npc_params( .actor24, $D9AF ) _wait( .flag1, 70 ) _npc_params( .actor24, $D9BB ) _code2562( .actor24, $01, $02, $02, $03, $FF )
.script024: _wait( .flag1, 60 ) _code2517( $000b, $0000 ) _wait( .flag1, 60 ) _code2517( $0008, $0000 ) _code2562( .actor25, $02, $01, $FF ) _code2517( $0009, $0000 ) _code2562( .actor26, $01, $01, $FF ) _code2517( $000a, $0000 ) _code2562( .actor27, $03, $01, $01, $01, $FF ) _npc_params( .actor24, $D9E3 ) _set_flags( .flag20, 0 ) _end()
.script025: _add_item_jump_if_max( .chunk00, .script001, .item22 ) ; {金塊1バレスト} [Gold Ballast] _code2562( .actor25, $00, $01, $FF ) _code2518( $0008, $0000 ) _play_sound( 19 ) _remove_msg_box() _call( .chunk01, .script007 ) _pen_color( GREEN ) {TREASURE}* _string( $01, YELLOW, .item22 ) ; {金塊1バレスト} [Gold Ballast] _icon( 0, .item22 ) ; {金塊1バレスト} [Gold Ballast] _pen_color( WHITE ) {を手に入れた!} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump( .chunk00, .script028 )
.script026: _add_item_jump_if_max( .chunk00, .script001, .item28 ) ; {ヴァユの短剣} [Dagger of Vayu] _code2562( .actor26, $03, $01, $FF ) _code2518( $0009, $0000 ) _play_sound( 19 ) _remove_msg_box() _call( .chunk01, .script007 ) _pen_color( GREEN ) {TREASURE}* _string( $01, YELLOW, .item28 ) ; {ヴァユの短剣} [Dagger of Vayu] _icon( 0, .item28 ) ; {ヴァユの短剣} [Dagger of Vayu] _pen_color( WHITE ) {を手に入れた!} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump( .chunk00, .script028 )
.script027: _add_item_jump_if_max( .chunk00, .script001, .item73 ) ; {碧玉のペンダント} [Jasper Pendant] _add_item_jump_if_max( .chunk00, .script001, .item153 ) ; {碧玉のペンダント} [Jasper Pendant] _code2562( .actor27, $03, $01, $FF ) _code2518( $000a, $0000 ) _play_sound( 19 ) _remove_msg_box() _call( .chunk01, .script007 ) _pen_color( GREEN ) {HOLIX&TRINKET}* _string( $01, YELLOW, .item73 ) ; {碧玉のペンダント} [Jasper Pendant] _icon( 0, .item73 ) ; {碧玉のペンダント} [Jasper Pendant] _pen_color( WHITE ) {を手に入れた} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump( .chunk00, .script028 )
.script028: _remove_msg_box() _fade_down_except( .mask00, .mask08 ) _clr_flags( .flag1, .flag2, .flag3, .flag4, .flag5, .flag6, .flag7, .flag8, .flag9, 0 ) _clr_flags( .flag10, .flag11, .flag12, .flag13, .flag14, .flag15, .flag16, .flag17, .flag18, .flag19, 0 ) _clr_flags( .flag20, .flag21, .flag22, .flag23, .flag24, .flag25, .flag26, .flag27, .flag28, .flag29, 0 ) _clr_flags( .flag30, .flag31, .flag32, .flag33, .flag34, .flag35, .flag36, .flag37, .flag38, .flag39, 0 ) _clr_flags( .flag40, .flag41, .flag42, .flag43, .flag44, .flag45, .flag46, .flag47, .flag48, .flag49, 0 ) _clr_flags( .flag50, .flag51, .flag52, .flag53, .flag54, .flag55, .flag56, .flag57, .flag58, .flag59, 0 ) _code2518( $0002, $0003, $0004, $0005, $0006, $0007, $0008, $0009, $0000 ) _code2518( $000a, $000b, $000c, $000d, $000e, $000f, $0010, $0011, $0012, $0013, $0000 ) _clr_flags( .flag20, .flag21, .flag22, .flag23, .flag24, .flag25, .flag26, .flag27, .flag28, .flag29, 0 ) _code2517( $0101, $0000 ) _code2518( $0196, $0000 ) _code2517( $01d1, $01d2, $01d3, $01d4, $01d5, $0000 ) _code2517( $01d6, $01d7, $01d8, $01d9, $01da, $01db, $01dc, $01dd, $01de, $01df, $0000 ) _code2517( $01e0, $01e1, $01e2, $01e3, $01e4, $01e5, $01e6, $01e7, $01e8, $01e9, $0000 ) _clr_flags( .flag253, 0 ) _set_flags( .flag254, 0 ) _set_flags( .flag221, .flag222, 0 ) _equip_item_in_slot( PLAYER, .eqpslot0, .item104 ) ; {ファイアーワンド} [Fire Wand] _code254F( $01 ) _end()
.script029: .script030: .script031: .script032: .script035: .script036: .script037: .script041: .script042: .script043: _end()
.script033: _cd_fade( 1, $0C ) _code2518( $01d1, $0000 ) _remove_msg_box() _fade_down_except( .mask01, .mask04 ) _play_music( $08 ) ; PSG tune 8. _call( .chunk00, .script034 ) _npc_params( .actor4, $DA45 ) _wait( .flag1, 20 ) _npc_params( .actor4, $DA49 ) _wait( .flag1, 120 ) _call( .chunk01, .script005 ) _call( .chunk01, .script127 ) _msg_delay( 255 ) _tst_2E82_set_A9_bit7() _adpcm_play( $00, $4F, $57, $00, $15 ) _code256D( $04 ) _pen_delay( 6 ) {あなたの} _pen_delay( 18 ) {声を}* _wait( .flag0, 60 ) _pen_delay( 9 ) {私に聞かせて‥‥} _wait( .flag0, 55 ) _pen_delay( 6 ) {ファウ} _wait_for_keypress_then_clr() _adpcm_stat() _code256D( $00 ) _clr_A9_bit7() _wait_for_keypress_then_clr() _remove_msg_box() _cd_fade( 0, $10 ) _adpcm_stop() _wait( .flag1, 30 ) _msg_delay( 255 ) _fade_down_except( .mask00, .mask04 ) _cd_pause() _code2517( $01d1, $0000 ) _goto_save_screen() _code2518( $01d1, $0000 ) _remove_msg_box() _code253D( $01 ) _call( .chunk00, .script034 ) _screen_on() _wait( .flag1, 30 ) _npc_params( .actor4, $DA4D ) _wait( .flag1, 34 ) _npc_params( .actor4, $DA55 ) _code2517( $01d1, $0000 ) _remove_msg_box() _fade_up_except( .mask01, .mask04 ) _play_music( $86 ) ; CD-Audio track 6. _end()
.script034: _tii( $0300, $0020, $00, $00, $02, $00, $03, $00, $44, $00, $8E, $00, $1E, $01, $66, $01, $54, $00, $9E, $00, $C0, $01, $C0, $01, $4A, $00, $93, $00, $DC, $00, $25, $01, $B6, $01 ) _code2560() _end()
.script038: _cd_fade( 1, $0C ) _movement_speed( .speed0 ) _code2561( $01, $01, $08, $FF ) _movement_speed( .speed1 ) _fade_down_except( .mask00, .mask00 ) _code2518( $01af, $0000 ) _clr_flags( .flag100, 0 ) _goto_world_map() _end()
.script039: _npc_params( .actor4, $D922 ) _npc_params( .actor6, $D934 ) _npc_params( .actor7, $D934 ) _npc_params( .actor8, $D946 ) _npc_params( .actor9, $D946 ) _npc_params( .actor10, $D958 ) _end()
.script040: _call( .chunk01, .script005 ) _call( .chunk01, .script111 ) {オルトナッシュか‥‥}* {チッ‥いやなこと}* {思い出させやがるぜ} _end()
.script044: _call( .chunk01, .script005 ) _call( .chunk01, .script112 ) {おかしな連中が}* {教会に}* {集まってるらしいねえ} _wait_for_keypress_then_clr() _call( .chunk01, .script112 ) {早く出ていけば}* {いいのに!} _end()
.script045: .script046: .script047: _end()
.script048: _call( .chunk01, .script005 ) _call( .chunk01, .script113 ) {あたしは‥}* {宗教には興味ないよ!} _wait_for_keypress_then_clr() _end()
.script049: .script050: .script051: _end()
.script052: _call( .chunk01, .script005 ) _call( .chunk01, .script114 ) {つまらない世の中に}* {なったわよね} _end()
.script053: _end()
.script054: _end()
.script055: _call( .chunk01, .script007 ) _pen_color( GREEN ) {NOTE}* _pen_color( WHITE ) {グレゴリー爺さんからの書き置き} _wait_for_keypress_then_clr() _remove_msg_box() _call( .chunk01, .script004 ) _pen_color( YELLOW ) _player_name( YELLOW ) _align_8pxl() {よ}* _pen_color( WHITE ) _call( .chunk07, .script092 ) _code2518( $0011, $0000 ) _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump_if_all_flags_set( .chunk00, .script028, .flag20, 0 ) _end()
.script056: _add_item_jump_if_max( .chunk00, .script001, .item59 ) ; {ヴァユ} [Vayu] _add_item_jump_if_max( .chunk00, .script001, .item59 ) ; {ヴァユ} [Vayu] _add_item_jump_if_max( .chunk00, .script001, .item59 ) ; {ヴァユ} [Vayu] _add_item_jump_if_max( .chunk00, .script001, .item59 ) ; {ヴァユ} [Vayu] _add_item_jump_if_max( .chunk00, .script001, .item59 ) ; {ヴァユ} [Vayu] _code2562( .actor5, $03, $01, $FF ) _code2518( $000e, $0000 ) _play_sound( 19 ) _call( .chunk01, .script007 ) _pen_color( GREEN ) {HOLIX}* _string( $01, YELLOW, .item59 ) ; {ヴァユ} [Vayu] _icon( 0, .item59 ) ; {ヴァユ} [Vayu] _pen_color( WHITE ) {を5個手に入れた} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump_if_all_flags_set( .chunk00, .script028, .flag20, 0 ) _end()
.script057: _add_item_jump_if_max( .chunk00, .script001, .item64 ) ; {ナンナル} [Nannal] _add_item_jump_if_max( .chunk00, .script001, .item64 ) ; {ナンナル} [Nannal] _add_item_jump_if_max( .chunk00, .script001, .item64 ) ; {ナンナル} [Nannal] _add_item_jump_if_max( .chunk00, .script001, .item64 ) ; {ナンナル} [Nannal] _add_item_jump_if_max( .chunk00, .script001, .item64 ) ; {ナンナル} [Nannal] _code2562( .actor6, $03, $01, $FF ) _code2518( $000f, $0000 ) _play_sound( 19 ) _call( .chunk01, .script007 ) _pen_color( GREEN ) {HOLIX}* _string( $01, YELLOW, .item64 ) ; {ナンナル} [Nannal] _icon( 0, .item64 ) ; {ナンナル} [Nannal] _pen_color( WHITE ) {を5個手に入れた} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump_if_all_flags_set( .chunk00, .script028, .flag20, 0 ) _end()
.script058: _add_item_jump_if_max( .chunk00, .script001, .item68 ) ; {スィン} [Suin] _add_item_jump_if_max( .chunk00, .script001, .item68 ) ; {スィン} [Suin] _add_item_jump_if_max( .chunk00, .script001, .item68 ) ; {スィン} [Suin] _add_item_jump_if_max( .chunk00, .script001, .item68 ) ; {スィン} [Suin] _add_item_jump_if_max( .chunk00, .script001, .item68 ) ; {スィン} [Suin] _code2562( .actor7, $03, $01, $FF ) _code2518( $0010, $0000 ) _play_sound( 19 ) _call( .chunk01, .script007 ) _pen_color( GREEN ) {HOLIX}* _string( $01, YELLOW, .item68 ) ; {スィン} [Suin] _icon( 0, .item68 ) ; {スィン} [Suin] _pen_color( WHITE ) {を5個手に入れた} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump_if_all_flags_set( .chunk00, .script028, .flag20, 0 ) _end()
.script059: _add_item_jump_if_max( .chunk00, .script001, .item160 ) ; {ライトニング} [Lightning] _code2562( .actor8, $03, $01, $FF ) _code2518( $000d, $0000 ) _play_sound( 19 ) _call( .chunk01, .script007 ) _pen_color( GREEN ) {SCROLL}* _string( $01, $s, YELLOW19195152 ) ; {ライトニング} [Lightning] _icon( 0, .item160 ) ; {ライトニング} [Lightning] _pen_color( WHITE ) {を手に入れた!} _wait_for_keypress_then_clr() _code251A( .chunk00, .script001, $0008, $0009, $000a, $000d, $000e, $000f, $0010, $0011, $0000 ) _jump_if_all_flags_set( .chunk00, .script028, .flag20, 0 ) _end()
.script060: _end()
|
|