mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +00:00
Added Luigi sounds (#77)
* added a new audio bank 10 for luigi sounds * made some audio memory buffers larger to fix sound cuts * added option to enable/disable luigi sounds in the sound options menu * added Andrat's "90's Classic Luigi Voice Pack" as default luigi sounds Co-authored-by: anzz1 <>
This commit is contained in:
parent
2b0f892251
commit
d1739648e1
57 changed files with 1367 additions and 162 deletions
5
Makefile
5
Makefile
|
@ -262,6 +262,11 @@ ifeq ($(DUMMY),FAIL)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Copy missing luigi sounds from mario sound banks
|
||||||
|
$(shell mkdir -p sound/samples/sfx_custom_luigi sound/samples/sfx_custom_luigi_peach )
|
||||||
|
$(shell cp -n sound/samples/sfx_mario/*.aiff sound/samples/sfx_custom_luigi/ )
|
||||||
|
$(shell cp -n sound/samples/sfx_mario_peach/*.aiff sound/samples/sfx_custom_luigi_peach/ )
|
||||||
|
|
||||||
# Make tools if out of date
|
# Make tools if out of date
|
||||||
DUMMY != make -C tools >&2 || echo FAIL
|
DUMMY != make -C tools >&2 || echo FAIL
|
||||||
ifeq ($(DUMMY),FAIL)
|
ifeq ($(DUMMY),FAIL)
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
#define SOUND_ARG_LOAD(bank, playFlags, soundID, priority, flags2) (((u32) (bank) << 28) | \
|
#define SOUND_ARG_LOAD(bank, playFlags, soundID, priority, flags2) (((u32) (bank) << 28) | \
|
||||||
((u32) (playFlags) << 24) | ((u32) (soundID) << 16) | ((u32) (priority) << 8) | \
|
((u32) (playFlags) << 24) | ((u32) (soundID) << 16) | ((u32) (priority) << 8) | \
|
||||||
((u32) (flags2) << 4) | SOUND_STATUS_STARTING)
|
((u32) (flags2) << 4) | SOUND_STATUS_STARTING)
|
||||||
|
|
||||||
|
#include "luigi_audio_defines.h"
|
||||||
|
|
||||||
#define SOUNDARGS_MASK_BANK 0xF0000000
|
#define SOUNDARGS_MASK_BANK 0xF0000000
|
||||||
#define SOUNDARGS_MASK_SOUNDID 0x00FF0000
|
#define SOUNDARGS_MASK_SOUNDID 0x00FF0000
|
||||||
|
|
57
include/luigi_audio_defines.h
Normal file
57
include/luigi_audio_defines.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
#ifndef LUIGI_AUDIO_DEFINES_H
|
||||||
|
#define LUIGI_AUDIO_DEFINES_H
|
||||||
|
|
||||||
|
/* Mario Sound Effects */
|
||||||
|
// A random number 0-2 is added to the sound ID before playing, producing Yah/Wah/Hoo
|
||||||
|
#define SOUND_LUIGI_YAH_WAH_HOO SOUND_ARG_LOAD(0x0A, 4, 0x00, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_HOOHOO SOUND_ARG_LOAD(0x0A, 4, 0x03, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_YAHOO SOUND_ARG_LOAD(0x0A, 4, 0x04, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_UH SOUND_ARG_LOAD(0x0A, 4, 0x05, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_HRMM SOUND_ARG_LOAD(0x0A, 4, 0x06, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_WAH2 SOUND_ARG_LOAD(0x0A, 4, 0x07, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_WHOA SOUND_ARG_LOAD(0x0A, 4, 0x08, 0xC0, 8)
|
||||||
|
#define SOUND_LUIGI_EEUH SOUND_ARG_LOAD(0x0A, 4, 0x09, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_ATTACKED SOUND_ARG_LOAD(0x0A, 4, 0x0A, 0xFF, 8)
|
||||||
|
#define SOUND_LUIGI_OOOF SOUND_ARG_LOAD(0x0A, 4, 0x0B, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_OOOF2 SOUND_ARG_LOAD(0x0A, 4, 0x0B, 0xD0, 8)
|
||||||
|
#define SOUND_LUIGI_HERE_WE_GO SOUND_ARG_LOAD(0x0A, 4, 0x0C, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_YAWNING SOUND_ARG_LOAD(0x0A, 4, 0x0D, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_SNORING1 SOUND_ARG_LOAD(0x0A, 4, 0x0E, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_SNORING2 SOUND_ARG_LOAD(0x0A, 4, 0x0F, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_WAAAOOOW SOUND_ARG_LOAD(0x0A, 4, 0x10, 0xC0, 8)
|
||||||
|
#define SOUND_LUIGI_HAHA SOUND_ARG_LOAD(0x0A, 4, 0x11, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_HAHA_2 SOUND_ARG_LOAD(0x0A, 4, 0x11, 0xF0, 8)
|
||||||
|
#define SOUND_LUIGI_UH2 SOUND_ARG_LOAD(0x0A, 4, 0x13, 0xD0, 8)
|
||||||
|
#define SOUND_LUIGI_UH2_2 SOUND_ARG_LOAD(0x0A, 4, 0x13, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_ON_FIRE SOUND_ARG_LOAD(0x0A, 4, 0x14, 0xA0, 8)
|
||||||
|
#define SOUND_LUIGI_DYING SOUND_ARG_LOAD(0x0A, 4, 0x15, 0xFF, 8)
|
||||||
|
#define SOUND_LUIGI_PANTING_COLD SOUND_ARG_LOAD(0x0A, 4, 0x16, 0x80, 8)
|
||||||
|
|
||||||
|
// A random number 0-2 is added to the sound ID before playing
|
||||||
|
#define SOUND_LUIGI_PANTING SOUND_ARG_LOAD(0x0A, 4, 0x18, 0x80, 8)
|
||||||
|
|
||||||
|
#define SOUND_LUIGI_COUGHING1 SOUND_ARG_LOAD(0x0A, 4, 0x1B, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_COUGHING2 SOUND_ARG_LOAD(0x0A, 4, 0x1C, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_COUGHING3 SOUND_ARG_LOAD(0x0A, 4, 0x1D, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_PUNCH_YAH SOUND_ARG_LOAD(0x0A, 4, 0x1E, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_PUNCH_HOO SOUND_ARG_LOAD(0x0A, 4, 0x1F, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_MAMA_MIA SOUND_ARG_LOAD(0x0A, 4, 0x20, 0x80, 8)
|
||||||
|
//#define SOUND_LUIGI_OKEY_DOKEY 0x2021
|
||||||
|
#define SOUND_LUIGI_GROUND_POUND_WAH SOUND_ARG_LOAD(0x0A, 4, 0x22, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_DROWNING SOUND_ARG_LOAD(0x0A, 4, 0x23, 0xF0, 8)
|
||||||
|
#define SOUND_LUIGI_PUNCH_WAH SOUND_ARG_LOAD(0x0A, 4, 0x24, 0x80, 8)
|
||||||
|
|
||||||
|
// A random number 0-4 is added to the sound ID before playing, producing one of
|
||||||
|
// Yahoo! (60% chance), Waha! (20%), or Yippee! (20%).
|
||||||
|
#define SOUND_LUIGI_YAHOO_WAHA_YIPPEE SOUND_ARG_LOAD(0x0A, 4, 0x2B, 0x80, 8)
|
||||||
|
|
||||||
|
#define SOUND_LUIGI_DOH SOUND_ARG_LOAD(0x0A, 4, 0x30, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_GAME_OVER SOUND_ARG_LOAD(0x0A, 4, 0x31, 0xFF, 8)
|
||||||
|
#define SOUND_LUIGI_HELLO SOUND_ARG_LOAD(0x0A, 4, 0x32, 0xFF, 8)
|
||||||
|
#define SOUND_LUIGI_PRESS_START_TO_PLAY SOUND_ARG_LOAD(0x0A, 4, 0x33, 0xFF, 0xA)
|
||||||
|
#define SOUND_LUIGI_TWIRL_BOUNCE SOUND_ARG_LOAD(0x0A, 4, 0x34, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_SNORING3 SOUND_ARG_LOAD(0x0A, 4, 0x35, 0xFF, 8)
|
||||||
|
#define SOUND_LUIGI_SO_LONGA_BOWSER SOUND_ARG_LOAD(0x0A, 4, 0x36, 0x80, 8)
|
||||||
|
#define SOUND_LUIGI_IMA_TIRED SOUND_ARG_LOAD(0x0A, 4, 0x37, 0x80, 8)
|
||||||
|
|
||||||
|
#endif // LUIGI_AUDIO_DEFINES_H
|
665
include/seq_luigi.inc
Normal file
665
include/seq_luigi.inc
Normal file
|
@ -0,0 +1,665 @@
|
||||||
|
.channel10:
|
||||||
|
chan_largenoteson
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setpanmix 127
|
||||||
|
chan_setnotepriority 14
|
||||||
|
chan_setval 0
|
||||||
|
chan_iowriteval 5
|
||||||
|
chan_stereoheadseteffects 1
|
||||||
|
chan_setdyntable .channel10_table
|
||||||
|
chan_jump .main_loop_luigi
|
||||||
|
|
||||||
|
.main_loop_luigi:
|
||||||
|
chan_delay1
|
||||||
|
chan_ioreadval 0
|
||||||
|
chan_bltz .main_loop_luigi
|
||||||
|
.start_playing_luigi:
|
||||||
|
chan_freelayer 0
|
||||||
|
chan_freelayer 1
|
||||||
|
chan_freelayer 2
|
||||||
|
chan_setval 0
|
||||||
|
chan_iowriteval 5
|
||||||
|
chan_ioreadval 4
|
||||||
|
chan_dyncall
|
||||||
|
|
||||||
|
|
||||||
|
.poll_luigi:
|
||||||
|
chan_delay1
|
||||||
|
chan_ioreadval 0
|
||||||
|
chan_bltz .skip_luigi
|
||||||
|
chan_beqz .force_stop_luigi
|
||||||
|
chan_jump .start_playing_luigi
|
||||||
|
.skip_luigi:
|
||||||
|
chan_testlayerfinished 0
|
||||||
|
chan_beqz .poll_luigi
|
||||||
|
chan_jump .main_loop_luigi
|
||||||
|
.force_stop_luigi:
|
||||||
|
chan_freelayer 0
|
||||||
|
chan_freelayer 1
|
||||||
|
chan_freelayer 2
|
||||||
|
chan_jump .main_loop_luigi
|
||||||
|
|
||||||
|
.channel10_table:
|
||||||
|
sound_ref .sound_luigi_jump_yah
|
||||||
|
sound_ref .sound_luigi_jump_wah
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_hoohoo
|
||||||
|
sound_ref .sound_luigi_yahoo
|
||||||
|
sound_ref .sound_luigi_uh
|
||||||
|
sound_ref .sound_luigi_hrmm
|
||||||
|
sound_ref .sound_luigi_wah2
|
||||||
|
sound_ref .sound_luigi_whoa
|
||||||
|
sound_ref .sound_luigi_eeuh
|
||||||
|
sound_ref .sound_luigi_attacked
|
||||||
|
sound_ref .sound_luigi_ooof
|
||||||
|
sound_ref .sound_luigi_here_we_go
|
||||||
|
sound_ref .sound_luigi_yawning
|
||||||
|
sound_ref .sound_luigi_snoring1
|
||||||
|
sound_ref .sound_luigi_snoring2
|
||||||
|
sound_ref .sound_luigi_waaaooow
|
||||||
|
sound_ref .sound_luigi_haha
|
||||||
|
sound_ref .sound_luigi_panting1
|
||||||
|
sound_ref .sound_luigi_uh2
|
||||||
|
sound_ref .sound_luigi_on_fire
|
||||||
|
sound_ref .sound_luigi_dying
|
||||||
|
sound_ref .sound_luigi_panting_cold
|
||||||
|
sound_ref .sound_luigi_coughing3
|
||||||
|
sound_ref .sound_luigi_panting1
|
||||||
|
sound_ref .sound_luigi_panting2
|
||||||
|
sound_ref .sound_luigi_panting3
|
||||||
|
sound_ref .sound_luigi_coughing1
|
||||||
|
sound_ref .sound_luigi_coughing2
|
||||||
|
sound_ref .sound_luigi_coughing3
|
||||||
|
sound_ref .sound_luigi_punch_yah
|
||||||
|
sound_ref .sound_luigi_punch_hoo
|
||||||
|
sound_ref .sound_luigi_mama_mia
|
||||||
|
sound_ref .sound_luigi_okey_dokey
|
||||||
|
sound_ref .sound_luigi_ground_pound_wah
|
||||||
|
sound_ref .sound_luigi_drowning
|
||||||
|
sound_ref .sound_luigi_punch_wah
|
||||||
|
sound_ref .sound_luigi_uh
|
||||||
|
sound_ref .sound_luigi_hrmm
|
||||||
|
sound_ref .sound_luigi_wah2
|
||||||
|
.ifdef VERSION_JP
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
.else
|
||||||
|
sound_ref .sound_peach_dear_luigi
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_jump_hoo
|
||||||
|
sound_ref .sound_luigi_yahoo
|
||||||
|
sound_ref .sound_luigi_yahoo
|
||||||
|
sound_ref .sound_luigi_yahoo
|
||||||
|
sound_ref .sound_luigi_waha
|
||||||
|
sound_ref .sound_luigi_yippee
|
||||||
|
sound_ref .sound_luigi_doh
|
||||||
|
sound_ref .sound_luigi_game_over
|
||||||
|
sound_ref .sound_luigi_hello
|
||||||
|
sound_ref .sound_luigi_press_start_to_play
|
||||||
|
sound_ref .sound_luigi_twirl_bounce
|
||||||
|
sound_ref .sound_luigi_snoring3
|
||||||
|
sound_ref .sound_luigi_so_longa_bowser
|
||||||
|
sound_ref .sound_luigi_ima_tired
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.sound_luigi_jump_hoo:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setlayer 0, .layer_luigi_C3C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C3C:
|
||||||
|
.ifdef VERSION_EU
|
||||||
|
layer_transpose 2
|
||||||
|
.endif
|
||||||
|
layer_portamento 0x82, 41, 127
|
||||||
|
layer_note1 37, 0x14, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_jump_wah:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 1
|
||||||
|
chan_setlayer 0, .layer_luigi_C4C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C4C:
|
||||||
|
layer_transpose 254
|
||||||
|
.layer_luigi_C4E:
|
||||||
|
layer_note1 38, 0x18, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_jump_yah:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 9
|
||||||
|
chan_setlayer 0, .layer_luigi_C5A
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C5A:
|
||||||
|
layer_transpose 254
|
||||||
|
.layer_luigi_C5C:
|
||||||
|
layer_portamento 0x82, 39, 200
|
||||||
|
layer_note1 38, 0x24, 120
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_hoohoo:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 1
|
||||||
|
chan_setlayer 0, .layer_luigi_C6C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C6C:
|
||||||
|
.ifdef VERSION_EU
|
||||||
|
layer_transpose 1
|
||||||
|
.endif
|
||||||
|
layer_portamento 0x82, 44, 200
|
||||||
|
layer_note1 39, 0x30, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_yahoo:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 4
|
||||||
|
chan_setlayer 0, .layer_luigi_C7C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C7C:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_somethingon
|
||||||
|
layer_portamento 0x85, 39, 255
|
||||||
|
layer_note1 42, 0x1e, 110
|
||||||
|
layer_note1 39, 0x41, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_uh:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 5
|
||||||
|
chan_setlayer 0, .layer_luigi_C92
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_C92:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_portamento 0x81, 41, 255
|
||||||
|
layer_note1 38, 0x2b, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_hrmm:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 6
|
||||||
|
chan_setlayer 0, .layer_luigi_CA4
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CA4:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 44, 0x1e, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_wah2:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 7
|
||||||
|
chan_setlayer 0, .layer_luigi_CB2
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CB2:
|
||||||
|
layer_transpose 253
|
||||||
|
layer_note1 39, 0x1c, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_whoa:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 8
|
||||||
|
chan_setlayer 0, .layer_luigi_CC0
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CC0:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 40, 0x30, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_eeuh:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 9
|
||||||
|
chan_setlayer 0, .layer_luigi_CCE
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CCE:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 40, 0x44, 105
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_attacked:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 10
|
||||||
|
chan_setlayer 0, .layer_luigi_CDC
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CDC:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 41, 0x30, 120
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_ooof:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 11
|
||||||
|
chan_setlayer 0, .layer_luigi_CEA
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CEA:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 38, 0x30, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_here_we_go:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 12
|
||||||
|
chan_setlayer 0, .layer_luigi_CF8
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_CF8:
|
||||||
|
layer_portamento 0x81, 38, 200
|
||||||
|
layer_note1 41, 0x85, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_yawning:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 13
|
||||||
|
chan_setlayer 0, .layer_luigi_D09
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D09:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x7f, 105
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_snoring1:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 14
|
||||||
|
chan_setlayer 0, .layer_luigi_D17
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D17:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x60, 64
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_snoring2:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 15
|
||||||
|
chan_setlayer 0, .layer_luigi_D25
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D25:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x5c, 52
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_waaaooow:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setlayer 0, .layer_luigi_D33
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D33:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0xaa, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_haha:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 3
|
||||||
|
chan_setlayer 0, .layer_luigi_D42
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D42:
|
||||||
|
layer_transpose 255
|
||||||
|
layer_note1 39, 0x4d, 120
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_uh2:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 6
|
||||||
|
chan_setlayer 0, .layer_luigi_D50
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D50:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 43, 0x1e, 105
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_on_fire:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 5
|
||||||
|
chan_setlayer 0, .layer_luigi_D5E
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D5E:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0xc8, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_dying:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 4
|
||||||
|
chan_setlayer 0, .layer_luigi_D6D
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D6D:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x8c, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_panting_cold:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 2
|
||||||
|
chan_setlayer 0, .layer_luigi_D7C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D7C:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_portamento 0x82, 35, 255
|
||||||
|
layer_note1 38, 0x30, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_panting1:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 2
|
||||||
|
chan_setlayer 0, .layer_luigi_D8E
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D8E:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x3c, 100
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_panting2:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 2
|
||||||
|
chan_setlayer 0, .layer_luigi_D9C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_D9C:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_delay 0x4
|
||||||
|
layer_note1 38, 0x3c, 100
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_panting3:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 2
|
||||||
|
chan_setlayer 0, .layer_luigi_DAC
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_DAC:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_delay 0x8
|
||||||
|
layer_note1 40, 0x3c, 100
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_coughing1:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 7
|
||||||
|
chan_setlayer 0, .layer_luigi_DBC
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_DBC:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_note1 39, 0x10, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_coughing2:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 7
|
||||||
|
chan_setlayer 0, .layer_luigi_DCA
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_DCA:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_portamento 0x81, 38, 255
|
||||||
|
layer_note1 41, 0x18, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_coughing3:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 7
|
||||||
|
chan_setlayer 0, .layer_luigi_DDC
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_DDC:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_somethingon
|
||||||
|
layer_portamento 0x85, 38, 255
|
||||||
|
layer_note1 41, 0xc, 115
|
||||||
|
layer_note1 35, 0x12, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_punch_yah:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 9
|
||||||
|
chan_setlayer 0, .layer_luigi_DFE
|
||||||
|
chan_setval 1
|
||||||
|
chan_call .delay
|
||||||
|
chan_setbank 0
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setlayer 1, .layer_luigi_538
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_538:
|
||||||
|
layer_portamento 0x81, 46, 255
|
||||||
|
layer_note1 31, 0xf, 100
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.layer_luigi_DFE:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_jump .layer_luigi_C5C
|
||||||
|
|
||||||
|
.sound_luigi_punch_hoo:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 10
|
||||||
|
chan_setlayer 0, .layer_luigi_E17
|
||||||
|
chan_setval 1
|
||||||
|
chan_call .delay
|
||||||
|
chan_setbank 0
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setlayer 1, .layer_luigi_548
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_548:
|
||||||
|
layer_note1 39, 0x12, 100
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.layer_luigi_E17:
|
||||||
|
layer_transpose 254
|
||||||
|
layer_portamento 0x81, 42, 255
|
||||||
|
layer_note1 38, 0x30, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_mama_mia:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 11
|
||||||
|
chan_setlayer 0, .layer_luigi_E29
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E29:
|
||||||
|
layer_portamento 0x81, 38, 255
|
||||||
|
layer_note1 36, 0x8c, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_okey_dokey:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 12
|
||||||
|
chan_setlayer 0, .layer_luigi_E3A
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E3A:
|
||||||
|
layer_note1 39, 0x60, 115
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_ground_pound_wah:
|
||||||
|
chan_jump .sound_luigi_wah2
|
||||||
|
|
||||||
|
.sound_luigi_drowning:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 13
|
||||||
|
chan_setlayer 0, .layer_luigi_E49
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E49:
|
||||||
|
layer_note1 38, 0x91, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_punch_wah:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 1
|
||||||
|
chan_setlayer 0, .layer_luigi_E62
|
||||||
|
chan_setval 1
|
||||||
|
chan_call .delay
|
||||||
|
chan_setbank 0
|
||||||
|
chan_setinstr 0
|
||||||
|
chan_setlayer 1, .layer_luigi_536
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_536:
|
||||||
|
layer_transpose 1
|
||||||
|
|
||||||
|
.layer_luigi_E62:
|
||||||
|
layer_transpose 255
|
||||||
|
layer_jump .layer_luigi_C4E
|
||||||
|
|
||||||
|
.ifndef VERSION_JP
|
||||||
|
.sound_peach_dear_luigi:
|
||||||
|
chan_setbank 12
|
||||||
|
chan_setinstr 15
|
||||||
|
chan_setlayer 0, .layer_luigi_E6F
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E6F:
|
||||||
|
layer_note1 39, 0x2bc, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_waha:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 24
|
||||||
|
chan_setlayer 0, .layer_luigi_E7C
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E7C:
|
||||||
|
layer_note1 39, 0x5a, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_yippee:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 25
|
||||||
|
chan_setlayer 0, .layer_luigi_E88
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E88:
|
||||||
|
layer_note1 39, 0x5a, 97
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_doh:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 16
|
||||||
|
chan_setlayer 0, .layer_luigi_E94
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_E94:
|
||||||
|
layer_note1 41, 0x46, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_game_over:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 17
|
||||||
|
chan_setlayer 0, .layer_luigi_EA0
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_EA0:
|
||||||
|
layer_note1 39, 0x55, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_hello:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 18
|
||||||
|
chan_setlayer 0, .layer_luigi_EAC
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_EAC:
|
||||||
|
layer_note1 39, 0x46, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_press_start_to_play:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 19
|
||||||
|
chan_setlayer 0, .layer_luigi_EB8
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_EB8:
|
||||||
|
layer_note1 39, 0x12c, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_twirl_bounce:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 20
|
||||||
|
chan_setlayer 0, .layer_luigi_EC5
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_EC5:
|
||||||
|
layer_note1 39, 0x30, 127
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_snoring3:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setlayer 0, .layer_luigi_ECF
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_ECF:
|
||||||
|
layer_delay 0x4e
|
||||||
|
.layer_luigi_ED1:
|
||||||
|
layer_loop 50
|
||||||
|
layer_call .layer_luigi_fn_EE1
|
||||||
|
layer_loopend
|
||||||
|
layer_setinstr 21
|
||||||
|
layer_note1 39, 0x44c, 127
|
||||||
|
layer_jump .layer_luigi_ED1
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.layer_luigi_fn_EE1:
|
||||||
|
layer_setinstr 21
|
||||||
|
layer_note1 37, 0x53, 127
|
||||||
|
layer_setinstr 15
|
||||||
|
layer_note1 37, 0x4e, 64
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_so_longa_bowser:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 22
|
||||||
|
chan_setlayer 0, .layer_luigi_EF7
|
||||||
|
chan_setlayer 1, .layer_luigi_EF7
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_EF7:
|
||||||
|
layer_portamento 0x82, 42, 200
|
||||||
|
layer_note1 39, 0xc8, 110
|
||||||
|
layer_end
|
||||||
|
|
||||||
|
.sound_luigi_ima_tired:
|
||||||
|
chan_setbank 11
|
||||||
|
chan_setinstr 23
|
||||||
|
chan_setlayer 0, .layer_luigi_F08
|
||||||
|
chan_end
|
||||||
|
|
||||||
|
.layer_luigi_F08:
|
||||||
|
layer_note1 39, 0x96, 110
|
||||||
|
layer_end
|
||||||
|
.endif
|
|
@ -149,6 +149,8 @@
|
||||||
#define TEXT_OPT_CHEAT8 _("Huge Mario")
|
#define TEXT_OPT_CHEAT8 _("Huge Mario")
|
||||||
#define TEXT_OPT_CHEAT9 _("Tiny Mario")
|
#define TEXT_OPT_CHEAT9 _("Tiny Mario")
|
||||||
|
|
||||||
|
#define TEXT_OPT_LUIGISND _("Luigi Sounds")
|
||||||
|
|
||||||
#endif // VERSION
|
#endif // VERSION
|
||||||
|
|
||||||
#endif // TEXT_OPTIONS_STRINGS_H
|
#endif // TEXT_OPTIONS_STRINGS_H
|
||||||
|
|
BIN
sound/samples/sfx_custom_luigi/00.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/00.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/01.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/01.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/02.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/02.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/03.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/03.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/04.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/04.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/05.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/05.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/06.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/06.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/07.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/07.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/08.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/08.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/09.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/09.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/0A.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/0A.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/0B.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/0B.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/0C.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/0C.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/10.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/10.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/14.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/14.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/16.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/16.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/18.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/18.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/19.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/19.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi/1A.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi/1A.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/00.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/00.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/01.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/01.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/02.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/02.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/03.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/03.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/04.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/04.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/05.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/05.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/08.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/08.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/09.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/09.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/0A.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/0A.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/0C.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/0C.aiff
Normal file
Binary file not shown.
BIN
sound/samples/sfx_custom_luigi_peach/0D.aiff
Normal file
BIN
sound/samples/sfx_custom_luigi_peach/0D.aiff
Normal file
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"comment": "This file lists all sequences together with the sound banks they use. If a sequence uses multiple banks, the first bank will be used by default, and it can switch between them using the chan_setbank command; e.g. chan_setbank 0 will switch to the first bank in the given list.",
|
"comment": "This file lists all sequences together with the sound banks they use. If a sequence uses multiple banks, the first bank will be used by default, and it can switch between them using the chan_setbank command; e.g. chan_setbank 0 will switch to the first bank in the given list.",
|
||||||
"00_sound_player": ["00", "01_terrain", "02_water", "03", "04", "05", "06", "07", "08_mario", "09", "0A_mario_peach"],
|
"00_sound_player": ["00", "01_terrain", "02_water", "03", "04", "05", "06", "07", "08_mario", "09", "0A_mario_peach", "26_custom_luigi", "27_custom_luigi_peach"],
|
||||||
"01_cutscene_collect_star": ["22"],
|
"01_cutscene_collect_star": ["22"],
|
||||||
"02_menu_title_screen": ["11"],
|
"02_menu_title_screen": ["11"],
|
||||||
"03_level_grass": ["22"],
|
"03_level_grass": ["22"],
|
||||||
|
|
|
@ -7,7 +7,7 @@ seq_setmutebhv 0x60
|
||||||
seq_setmutescale 0
|
seq_setmutescale 0
|
||||||
seq_setvol 127
|
seq_setvol 127
|
||||||
seq_settempo 120
|
seq_settempo 120
|
||||||
seq_initchannels 0x3ff
|
seq_initchannels 0x7ff
|
||||||
seq_startchannel 0, .channel0
|
seq_startchannel 0, .channel0
|
||||||
seq_startchannel 1, .channel1
|
seq_startchannel 1, .channel1
|
||||||
seq_startchannel 2, .channel2
|
seq_startchannel 2, .channel2
|
||||||
|
@ -18,10 +18,13 @@ seq_startchannel 6, .channel6
|
||||||
seq_startchannel 7, .channel7
|
seq_startchannel 7, .channel7
|
||||||
seq_startchannel 8, .channel38
|
seq_startchannel 8, .channel38
|
||||||
seq_startchannel 9, .channel59
|
seq_startchannel 9, .channel59
|
||||||
|
seq_startchannel 10, .channel10
|
||||||
.seq_loop:
|
.seq_loop:
|
||||||
seq_delay 20000
|
seq_delay 20000
|
||||||
seq_jump .seq_loop
|
seq_jump .seq_loop
|
||||||
|
|
||||||
|
.include "seq_luigi.inc"
|
||||||
|
|
||||||
.channel0:
|
.channel0:
|
||||||
chan_largenoteson
|
chan_largenoteson
|
||||||
chan_setinstr 0
|
chan_setinstr 0
|
||||||
|
|
189
sound/sound_banks/26_custom_luigi.json
Normal file
189
sound/sound_banks/26_custom_luigi.json
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
{
|
||||||
|
"date": "1996-02-14",
|
||||||
|
"sample_bank": "sfx_custom_luigi",
|
||||||
|
"envelopes": {
|
||||||
|
"envelope0": [
|
||||||
|
[2, 32700],
|
||||||
|
[1, 32700],
|
||||||
|
[32700, 29430],
|
||||||
|
"hang"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"instruments": {
|
||||||
|
"inst0": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "00"
|
||||||
|
},
|
||||||
|
"inst1": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "01"
|
||||||
|
},
|
||||||
|
"inst2": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "02"
|
||||||
|
},
|
||||||
|
"inst3": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "03"
|
||||||
|
},
|
||||||
|
"inst4": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "04"
|
||||||
|
},
|
||||||
|
"inst5": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "05"
|
||||||
|
},
|
||||||
|
"inst6": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "06"
|
||||||
|
},
|
||||||
|
"inst7": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "07"
|
||||||
|
},
|
||||||
|
"inst8": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "08"
|
||||||
|
},
|
||||||
|
"inst9": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "09"
|
||||||
|
},
|
||||||
|
"inst10": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0A"
|
||||||
|
},
|
||||||
|
"inst11": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0B"
|
||||||
|
},
|
||||||
|
"inst12": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0C"
|
||||||
|
},
|
||||||
|
"inst13": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0D"
|
||||||
|
},
|
||||||
|
"inst14": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0E"
|
||||||
|
},
|
||||||
|
"inst15": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0F"
|
||||||
|
},
|
||||||
|
"inst16": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "10"
|
||||||
|
},
|
||||||
|
"inst17": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "11"
|
||||||
|
},
|
||||||
|
"inst18": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "12"
|
||||||
|
},
|
||||||
|
"inst19": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "13"
|
||||||
|
},
|
||||||
|
"inst20": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "14"
|
||||||
|
},
|
||||||
|
"inst21": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "15"
|
||||||
|
},
|
||||||
|
"inst22": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "16"
|
||||||
|
},
|
||||||
|
"inst23": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "17"
|
||||||
|
},
|
||||||
|
"inst24": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "18"
|
||||||
|
},
|
||||||
|
"inst25": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "19"
|
||||||
|
},
|
||||||
|
"inst26": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "1A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"instrument_list": [
|
||||||
|
"inst0",
|
||||||
|
"inst1",
|
||||||
|
"inst2",
|
||||||
|
"inst3",
|
||||||
|
"inst4",
|
||||||
|
"inst5",
|
||||||
|
"inst6",
|
||||||
|
"inst7",
|
||||||
|
"inst8",
|
||||||
|
"inst9",
|
||||||
|
"inst10",
|
||||||
|
"inst11",
|
||||||
|
"inst12",
|
||||||
|
"inst13",
|
||||||
|
"inst14",
|
||||||
|
"inst15",
|
||||||
|
"inst16",
|
||||||
|
"inst17",
|
||||||
|
"inst18",
|
||||||
|
"inst19",
|
||||||
|
"inst20",
|
||||||
|
"inst21",
|
||||||
|
"inst22",
|
||||||
|
"inst23",
|
||||||
|
"inst24",
|
||||||
|
"inst25",
|
||||||
|
"inst26"
|
||||||
|
]
|
||||||
|
}
|
164
sound/sound_banks/27_custom_luigi_peach.json
Normal file
164
sound/sound_banks/27_custom_luigi_peach.json
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
{
|
||||||
|
"date": "1996-02-14",
|
||||||
|
"sample_bank": "sfx_custom_luigi_peach",
|
||||||
|
"envelopes": {
|
||||||
|
"envelope0": [
|
||||||
|
[2, 32700],
|
||||||
|
[1, 32700],
|
||||||
|
[32700, 29430],
|
||||||
|
"hang"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"instruments": {
|
||||||
|
"inst0": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "00"
|
||||||
|
},
|
||||||
|
"inst1": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "01"
|
||||||
|
},
|
||||||
|
"inst2": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "02"
|
||||||
|
},
|
||||||
|
"inst3": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "03"
|
||||||
|
},
|
||||||
|
"inst4": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "04"
|
||||||
|
},
|
||||||
|
"inst5": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "05"
|
||||||
|
},
|
||||||
|
"inst6": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "06"
|
||||||
|
},
|
||||||
|
"inst7": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "07"
|
||||||
|
},
|
||||||
|
"inst8": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "08"
|
||||||
|
},
|
||||||
|
"inst9": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "09"
|
||||||
|
},
|
||||||
|
"inst10": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0A"
|
||||||
|
},
|
||||||
|
"inst11": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0B"
|
||||||
|
},
|
||||||
|
"inst12": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0C"
|
||||||
|
},
|
||||||
|
"inst13": {
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0D"
|
||||||
|
},
|
||||||
|
"inst14": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0E"
|
||||||
|
},
|
||||||
|
"inst15": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "0F"
|
||||||
|
},
|
||||||
|
"inst16": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "10"
|
||||||
|
},
|
||||||
|
"inst17": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "11"
|
||||||
|
},
|
||||||
|
"inst18": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "12"
|
||||||
|
},
|
||||||
|
"inst19": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "13"
|
||||||
|
},
|
||||||
|
"inst20": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "14"
|
||||||
|
},
|
||||||
|
"inst21": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "15"
|
||||||
|
},
|
||||||
|
"inst22": {
|
||||||
|
"ifdef": ["VERSION_US", "VERSION_EU"],
|
||||||
|
"release_rate": 208,
|
||||||
|
"envelope": "envelope0",
|
||||||
|
"sound": "16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"instrument_list": [
|
||||||
|
"inst0",
|
||||||
|
"inst1",
|
||||||
|
"inst2",
|
||||||
|
null,
|
||||||
|
"inst3",
|
||||||
|
"inst4",
|
||||||
|
"inst5",
|
||||||
|
"inst6",
|
||||||
|
"inst7",
|
||||||
|
"inst8",
|
||||||
|
"inst9",
|
||||||
|
"inst10",
|
||||||
|
"inst11",
|
||||||
|
"inst12",
|
||||||
|
"inst13",
|
||||||
|
"inst14",
|
||||||
|
"inst15",
|
||||||
|
"inst16",
|
||||||
|
"inst17",
|
||||||
|
"inst18",
|
||||||
|
"inst19",
|
||||||
|
"inst20",
|
||||||
|
"inst21",
|
||||||
|
"inst22"
|
||||||
|
]
|
||||||
|
}
|
|
@ -60,24 +60,24 @@ struct AudioSessionSettings gAudioSessionPresets[18] = {
|
||||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3F00, 0x6200, 0x4400, 0x2A80 },
|
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3F00, 0x6200, 0x4400, 0x2A80 },
|
||||||
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x3300, 0x5500, 0x4000, 0x1B00 },
|
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x3300, 0x5500, 0x4000, 0x1B00 },
|
||||||
#else
|
#else
|
||||||
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
{ 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
{ 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
{ 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x4000, 0x6E00, 0x3F00, 0x2A00 },
|
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x4100, 0x6E00, 0x4400, 0x2A80 },
|
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x34C0, 0x6280, 0x4000, 0x1B00 },
|
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
#endif
|
#endif
|
||||||
{ 27000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 27000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 27000, 16, 1, 0x0800, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 27000, 16, 1, 0x0800, 0x3FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 27000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 27000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 27000, 16, 1, 0x1000, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 27000, 16, 1, 0x1000, 0x3FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 27000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 27000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 14, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 32000, 14, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 12, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 32000, 12, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 10, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 32000, 10, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 32000, 8, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
{ 32000, 8, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7400, 0x7400, 0x7400, 0x7400 },
|
||||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -377,15 +377,15 @@ s16 *gWaveSamples[4] = { sSawtoothWave, sTriangleWave, sSineWave, sSquareWave };
|
||||||
|
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
u8 euUnknownData_8030194c[4] = { 0x40, 0x20, 0x10, 0x08 };
|
u8 euUnknownData_8030194c[4] = { 0x40, 0x20, 0x10, 0x08 };
|
||||||
u16 gHeadsetPanQuantization[0x10] = {
|
u16 gHeadsetPanQuantization[0x11] = {
|
||||||
0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0,
|
0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0, 0x30,
|
||||||
};
|
};
|
||||||
s32 euUnknownData_80301950[32] = { //maybe envelope of some kind?
|
s32 euUnknownData_80301950[32] = { //maybe envelope of some kind?
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0,
|
0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0,
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
u16 gHeadsetPanQuantization[10] = { 0x40, 0x30, 0x20, 0x10, 0, 0, 0, 0, 0, 0 };
|
u16 gHeadsetPanQuantization[11] = { 0x40, 0x30, 0x20, 0x10, 0, 0, 0, 0, 0, 0, 0x20 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Linearly interpolated between
|
// Linearly interpolated between
|
||||||
|
|
|
@ -41,12 +41,12 @@ extern s16 *gWaveSamples[4];
|
||||||
|
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
extern u8 euUnknownData_8030194c[4];
|
extern u8 euUnknownData_8030194c[4];
|
||||||
extern u16 gHeadsetPanQuantization[0x10];
|
extern u16 gHeadsetPanQuantization[0x11];
|
||||||
extern s32 euUnknownData_80301950[32];
|
extern s32 euUnknownData_80301950[32];
|
||||||
extern struct NoteSubEu gZeroNoteSub;
|
extern struct NoteSubEu gZeroNoteSub;
|
||||||
extern struct NoteSubEu gDefaultNoteSub;
|
extern struct NoteSubEu gDefaultNoteSub;
|
||||||
#else
|
#else
|
||||||
extern u16 gHeadsetPanQuantization[10];
|
extern u16 gHeadsetPanQuantization[11];
|
||||||
#endif
|
#endif
|
||||||
extern f32 gHeadsetPanVolume[128];
|
extern f32 gHeadsetPanVolume[128];
|
||||||
extern f32 gStereoPanVolume[128];
|
extern f32 gStereoPanVolume[128];
|
||||||
|
|
|
@ -153,7 +153,7 @@ u8 audioString118__[] = "";
|
||||||
// N.B. sound banks are different from the audio banks referred to in other
|
// N.B. sound banks are different from the audio banks referred to in other
|
||||||
// files. We should really fix our naming to be less ambiguous...
|
// files. We should really fix our naming to be less ambiguous...
|
||||||
#define MAX_BG_MUSIC_QUEUE_SIZE 6
|
#define MAX_BG_MUSIC_QUEUE_SIZE 6
|
||||||
#define SOUND_BANK_COUNT 10
|
#define SOUND_BANK_COUNT 11
|
||||||
#define MAX_CHANNELS_PER_SOUND 1
|
#define MAX_CHANNELS_PER_SOUND 1
|
||||||
|
|
||||||
#define SEQUENCE_NONE 0xFF
|
#define SEQUENCE_NONE 0xFF
|
||||||
|
@ -448,10 +448,10 @@ STATIC_ASSERT(ARRAY_COUNT(sBackgroundMusicDefaultVolume) == SEQ_COUNT,
|
||||||
|
|
||||||
u8 sPlayer0CurSeqId = SEQUENCE_NONE;
|
u8 sPlayer0CurSeqId = SEQUENCE_NONE;
|
||||||
u8 sMusicDynamicDelay = 0;
|
u8 sMusicDynamicDelay = 0;
|
||||||
u8 D_803320A4[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // pointers to head of list
|
u8 D_803320A4[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // pointers to head of list
|
||||||
u8 D_803320B0[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // pointers to head of list
|
u8 D_803320B0[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // pointers to head of list
|
||||||
u8 D_803320BC[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging
|
u8 D_803320BC[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging
|
||||||
u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||||
|
|
||||||
// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.
|
// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
|
@ -460,7 +460,7 @@ u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
|
||||||
#define BANK27_SIZE 0x40
|
#define BANK27_SIZE 0x40
|
||||||
#endif
|
#endif
|
||||||
u8 sNumSoundsPerBank[SOUND_BANK_COUNT] = {
|
u8 sNumSoundsPerBank[SOUND_BANK_COUNT] = {
|
||||||
0x70, 0x30, BANK27_SIZE, 0x80, 0x20, 0x80, 0x20, BANK27_SIZE, 0x80, 0x80,
|
0x70, 0x30, BANK27_SIZE, 0x80, 0x20, 0x80, 0x20, BANK27_SIZE, 0x80, 0x80, BANK27_SIZE
|
||||||
};
|
};
|
||||||
#undef BANK27_SIZE
|
#undef BANK27_SIZE
|
||||||
|
|
||||||
|
@ -1296,6 +1296,7 @@ void update_game_sound(void) {
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
case 2:
|
case 2:
|
||||||
|
case 10: // custom luigi audio bank 10
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),
|
func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),
|
||||||
get_sound_reverb(bankIndex, index, channelIndex));
|
get_sound_reverb(bankIndex, index, channelIndex));
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LAYERS_MAX 4
|
#define LAYERS_MAX 8
|
||||||
#define CHANNELS_MAX 16
|
#define CHANNELS_MAX 32
|
||||||
|
|
||||||
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
|
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40
|
#define AUDIO_FRAME_DMA_QUEUE_SIZE 0x80
|
||||||
|
|
||||||
#define PRELOAD_BANKS 2
|
#define PRELOAD_BANKS 2
|
||||||
#define PRELOAD_SEQUENCE 1
|
#define PRELOAD_SEQUENCE 1
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "sound_init.h"
|
#include "sound_init.h"
|
||||||
#include "thread6.h"
|
#include "thread6.h"
|
||||||
|
|
||||||
|
#include "pc/configfile.h"
|
||||||
#include "pc/network/network.h"
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x01
|
#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x01
|
||||||
|
@ -796,7 +797,8 @@ u32 take_damage_and_knock_back(struct MarioState *m, struct Object *o) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o->oDamageOrCoinValue > 0) {
|
if (o->oDamageOrCoinValue > 0) {
|
||||||
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
|
@ -1382,7 +1384,8 @@ u32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Objec
|
||||||
marioObj->oMarioTornadoYawVel = 0x400;
|
marioObj->oMarioTornadoYawVel = 0x400;
|
||||||
marioObj->oMarioTornadoPosY = m->pos[1] - o->oPosY;
|
marioObj->oMarioTornadoPosY = m->pos[1] - o->oPosY;
|
||||||
|
|
||||||
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
||||||
queue_rumble_data_mario(m, 30, 60);
|
queue_rumble_data_mario(m, 30, 60);
|
||||||
|
|
||||||
return set_mario_action(m, ACT_TORNADO_TWIRLING, m->action == ACT_TWIRLING);
|
return set_mario_action(m, ACT_TORNADO_TWIRLING, m->action == ACT_TWIRLING);
|
||||||
|
@ -1404,7 +1407,8 @@ u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Obj
|
||||||
|
|
||||||
marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY;
|
marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY;
|
||||||
|
|
||||||
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
||||||
queue_rumble_data_mario(m, 30, 60);
|
queue_rumble_data_mario(m, 30, 60);
|
||||||
|
|
||||||
return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0);
|
return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0);
|
||||||
|
@ -1427,7 +1431,8 @@ u32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct O
|
||||||
m->forwardVel = -24.0f;
|
m->forwardVel = -24.0f;
|
||||||
m->vel[1] = 12.0f;
|
m->vel[1] = 12.0f;
|
||||||
|
|
||||||
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
return set_mario_action(m, ACT_GETTING_BLOWN, 0);
|
return set_mario_action(m, ACT_GETTING_BLOWN, 0);
|
||||||
}
|
}
|
||||||
|
@ -1451,7 +1456,8 @@ u32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object
|
||||||
} else {
|
} else {
|
||||||
m->marioObj->oMarioBurnTimer = 0;
|
m->marioObj->oMarioBurnTimer = 0;
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ON_FIRE : SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
|
||||||
if ((m->action & ACT_FLAG_AIR) && m->vel[1] <= 0.0f) {
|
if ((m->action & ACT_FLAG_AIR) && m->vel[1] <= 0.0f) {
|
||||||
burningAction = ACT_BURNING_FALL;
|
burningAction = ACT_BURNING_FALL;
|
||||||
|
@ -1474,7 +1480,8 @@ u32 interact_snufit_bullet(struct MarioState *m, UNUSED u32 interactType, struct
|
||||||
m->interactObj = o;
|
m->interactObj = o;
|
||||||
take_damage_from_interact_object(m);
|
take_damage_from_interact_object(m);
|
||||||
|
|
||||||
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
|
|
||||||
return drop_and_set_mario_action(m, determine_knockback_action(m, o->oDamageOrCoinValue),
|
return drop_and_set_mario_action(m, determine_knockback_action(m, o->oDamageOrCoinValue),
|
||||||
|
@ -1535,7 +1542,8 @@ u32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object
|
||||||
m->invincTimer = 2;
|
m->invincTimer = 2;
|
||||||
|
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
play_sound(SOUND_MARIO_EEUH, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_EEUH : SOUND_MARIO_EEUH, m->marioObj->header.gfx.cameraToObject);
|
||||||
play_sound(SOUND_OBJ_BULLY_METAL, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_OBJ_BULLY_METAL, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
|
||||||
push_mario_out_of_object(m, o, 5.0f);
|
push_mario_out_of_object(m, o, 5.0f);
|
||||||
|
@ -1557,7 +1565,8 @@ u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object
|
||||||
m->interactObj = o;
|
m->interactObj = o;
|
||||||
|
|
||||||
take_damage_from_interact_object(m);
|
take_damage_from_interact_object(m);
|
||||||
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
queue_rumble_data_mario(m, 70, 60);
|
queue_rumble_data_mario(m, 70, 60);
|
||||||
|
|
||||||
if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {
|
if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {
|
||||||
|
@ -1617,7 +1626,8 @@ u32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struc
|
||||||
bounce_off_object(m, o, 80.0f);
|
bounce_off_object(m, o, 80.0f);
|
||||||
reset_mario_pitch(m);
|
reset_mario_pitch(m);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_TWIRL_BOUNCE : SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
|
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1652,7 +1662,8 @@ u32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Ob
|
||||||
bounce_off_object(m, o, 80.0f);
|
bounce_off_object(m, o, 80.0f);
|
||||||
reset_mario_pitch(m);
|
reset_mario_pitch(m);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_TWIRL_BOUNCE : SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
|
return drop_and_set_mario_action(m, ACT_TWIRLING, 0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1770,7 +1781,8 @@ u32 check_object_grab_mario(struct MarioState *m, UNUSED u32 interactType, struc
|
||||||
m->usedObj = o;
|
m->usedObj = o;
|
||||||
|
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
return set_mario_action(m, ACT_GRABBED, 0);
|
return set_mario_action(m, ACT_GRABBED, 0);
|
||||||
}
|
}
|
||||||
|
@ -1900,7 +1912,8 @@ u32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject);
|
||||||
play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
|
||||||
if (capMusic != 0) {
|
if (capMusic != 0) {
|
||||||
play_cap_music(capMusic);
|
play_cap_music(capMusic);
|
||||||
|
@ -2116,7 +2129,8 @@ void check_death_barrier(struct MarioState *m) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (level_trigger_warp(m, WARP_OP_WARP_FLOOR) == 20 && !(m->flags & MARIO_UNKNOWN_18)) {
|
if (level_trigger_warp(m, WARP_OP_WARP_FLOOR) == 20 && !(m->flags & MARIO_UNKNOWN_18)) {
|
||||||
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,13 +264,14 @@ void play_sound_if_no_flag(struct MarioState *m, u32 soundBits, u32 flags) {
|
||||||
*/
|
*/
|
||||||
void play_mario_jump_sound(struct MarioState *m) {
|
void play_mario_jump_sound(struct MarioState *m) {
|
||||||
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
|
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
if (m->action == ACT_TRIPLE_JUMP) {
|
if (m->action == ACT_TRIPLE_JUMP) {
|
||||||
play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),
|
play_sound(((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO_WAHA_YIPPEE : SOUND_MARIO_YAHOO_WAHA_YIPPEE) + ((gAudioRandom % 5) << 16),
|
||||||
m->marioObj->header.gfx.cameraToObject);
|
m->marioObj->header.gfx.cameraToObject);
|
||||||
} else {
|
} else {
|
||||||
#endif
|
#endif
|
||||||
play_sound(SOUND_MARIO_YAH_WAH_HOO + ((gAudioRandom % 3) << 16),
|
play_sound(((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAH_WAH_HOO : SOUND_MARIO_YAH_WAH_HOO) + ((gAudioRandom % 3) << 16),
|
||||||
m->marioObj->header.gfx.cameraToObject);
|
m->marioObj->header.gfx.cameraToObject);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
}
|
}
|
||||||
|
@ -307,7 +308,7 @@ void play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 wav
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m->flags & MARIO_METAL_CAP) || soundBits == SOUND_ACTION_UNSTUCK_FROM_GROUND
|
if ((m->flags & MARIO_METAL_CAP) || soundBits == SOUND_ACTION_UNSTUCK_FROM_GROUND
|
||||||
|| soundBits == SOUND_MARIO_PUNCH_HOO) {
|
|| soundBits == SOUND_MARIO_PUNCH_HOO || soundBits == SOUND_LUIGI_PUNCH_HOO) {
|
||||||
play_sound(soundBits, m->marioObj->header.gfx.cameraToObject);
|
play_sound(soundBits, m->marioObj->header.gfx.cameraToObject);
|
||||||
} else {
|
} else {
|
||||||
play_sound(m->terrainSoundAddend + soundBits, m->marioObj->header.gfx.cameraToObject);
|
play_sound(m->terrainSoundAddend + soundBits, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
@ -1909,10 +1910,11 @@ s32 execute_mario_action(UNUSED struct Object *o) {
|
||||||
|
|
||||||
// HACK: mute snoring even when we skip the waking up action
|
// HACK: mute snoring even when we skip the waking up action
|
||||||
if (gMarioState->isSnoring && gMarioState->action != ACT_SLEEPING) {
|
if (gMarioState->isSnoring && gMarioState->action != ACT_SLEEPING) {
|
||||||
func_803205E8(SOUND_MARIO_SNORING1, gMarioState->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (gMarioState->playerIndex != 0) : (gMarioState->playerIndex == 0);
|
||||||
func_803205E8(SOUND_MARIO_SNORING2, gMarioState->marioObj->header.gfx.cameraToObject);
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING1 : SOUND_MARIO_SNORING1, gMarioState->marioObj->header.gfx.cameraToObject);
|
||||||
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING2 : SOUND_MARIO_SNORING2, gMarioState->marioObj->header.gfx.cameraToObject);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
func_803205E8(SOUND_MARIO_SNORING3, gMarioState->marioObj->header.gfx.cameraToObject);
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING3 : SOUND_MARIO_SNORING3, gMarioState->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
gMarioState->isSnoring = FALSE;
|
gMarioState->isSnoring = FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#endif
|
#endif
|
||||||
#include "behavior_table.h"
|
#include "behavior_table.h"
|
||||||
#include "object_helpers.h"
|
#include "object_helpers.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
void play_flip_sounds(struct MarioState *m, s16 frame1, s16 frame2, s16 frame3) {
|
void play_flip_sounds(struct MarioState *m, s16 frame1, s16 frame2, s16 frame3) {
|
||||||
s32 animFrame = m->marioObj->header.gfx.unk38.animFrame;
|
s32 animFrame = m->marioObj->header.gfx.unk38.animFrame;
|
||||||
|
@ -32,7 +34,8 @@ void play_far_fall_sound(struct MarioState *m) {
|
||||||
if (!(action & ACT_FLAG_INVULNERABLE) && action != ACT_TWIRLING && action != ACT_FLYING
|
if (!(action & ACT_FLAG_INVULNERABLE) && action != ACT_TWIRLING && action != ACT_FLYING
|
||||||
&& !(m->flags & MARIO_UNKNOWN_18)) {
|
&& !(m->flags & MARIO_UNKNOWN_18)) {
|
||||||
if (m->peakHeight - m->pos[1] > 1150.0f) {
|
if (m->peakHeight - m->pos[1] > 1150.0f) {
|
||||||
play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->flags |= MARIO_UNKNOWN_18;
|
m->flags |= MARIO_UNKNOWN_18;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,10 +43,11 @@ void play_far_fall_sound(struct MarioState *m) {
|
||||||
|
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
void play_knockback_sound(struct MarioState *m) {
|
void play_knockback_sound(struct MarioState *m) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
if (m->actionArg == 0 && (m->forwardVel <= -28.0f || m->forwardVel >= 28.0f)) {
|
if (m->actionArg == 0 && (m->forwardVel <= -28.0f || m->forwardVel >= 28.0f)) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DOH, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DOH : SOUND_MARIO_DOH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
} else {
|
} else {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -59,7 +63,8 @@ s32 lava_boost_on_wall(struct MarioState *m) {
|
||||||
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
|
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ON_FIRE : SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
||||||
update_mario_sound_and_camera(m);
|
update_mario_sound_and_camera(m);
|
||||||
return drop_and_set_mario_action(m, ACT_LAVA_BOOST, 1);
|
return drop_and_set_mario_action(m, ACT_LAVA_BOOST, 1);
|
||||||
}
|
}
|
||||||
|
@ -88,7 +93,8 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
|
||||||
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24;
|
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24;
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
|
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
|
||||||
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
return drop_and_set_mario_action(m, hardFallAction, 4);
|
return drop_and_set_mario_action(m, hardFallAction, 4);
|
||||||
} else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) {
|
} else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) {
|
||||||
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12;
|
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12;
|
||||||
|
@ -96,7 +102,8 @@ s32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {
|
||||||
|
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
|
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_FALL_DAMAGE); }
|
||||||
play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,10 +136,11 @@ s32 should_get_stuck_in_ground(struct MarioState *m) {
|
||||||
|
|
||||||
s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) {
|
s32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) {
|
||||||
if (should_get_stuck_in_ground(m)) {
|
if (should_get_stuck_in_ground(m)) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
||||||
drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0);
|
drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0);
|
||||||
|
@ -471,7 +479,8 @@ s32 act_double_jump(struct MarioState *m) {
|
||||||
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_HOOHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HOOHOO : SOUND_MARIO_HOOHOO);
|
||||||
common_air_action_step(m, ACT_DOUBLE_JUMP_LAND, animation,
|
common_air_action_step(m, ACT_DOUBLE_JUMP_LAND, animation,
|
||||||
AIR_STEP_CHECK_LEDGE_GRAB | AIR_STEP_CHECK_HANG);
|
AIR_STEP_CHECK_LEDGE_GRAB | AIR_STEP_CHECK_HANG);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -493,7 +502,8 @@ s32 act_triple_jump(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
|
||||||
#else
|
#else
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0);
|
common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0);
|
||||||
|
@ -509,7 +519,8 @@ s32 act_backflip(struct MarioState *m) {
|
||||||
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAH_WAH_HOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAH_WAH_HOO : SOUND_MARIO_YAH_WAH_HOO);
|
||||||
common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0);
|
common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0);
|
||||||
|
|
||||||
if (m->action == ACT_BACKFLIP_LAND) {
|
if (m->action == ACT_BACKFLIP_LAND) {
|
||||||
|
@ -634,10 +645,11 @@ s32 act_long_jump(struct MarioState *m) {
|
||||||
animation = MARIO_ANIM_SLOW_LONGJUMP;
|
animation = MARIO_ANIM_SLOW_LONGJUMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO);
|
||||||
|
|
||||||
if (m->floor->type == SURFACE_VERTICAL_WIND && m->actionState == 0) {
|
if (m->floor->type == SURFACE_VERTICAL_WIND && m->actionState == 0) {
|
||||||
play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->actionState = 1;
|
m->actionState = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -716,8 +728,9 @@ s32 act_twirling(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_dive(struct MarioState *m) {
|
s32 act_dive(struct MarioState *m) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
if (m->actionArg == 0) {
|
if (m->actionArg == 0) {
|
||||||
play_mario_sound(m, SOUND_ACTION_THROW, SOUND_MARIO_HOOHOO);
|
play_mario_sound(m, SOUND_ACTION_THROW, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HOOHOO : SOUND_MARIO_HOOHOO);
|
||||||
} else {
|
} else {
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
|
||||||
}
|
}
|
||||||
|
@ -750,9 +763,9 @@ s32 act_dive(struct MarioState *m) {
|
||||||
if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) {
|
if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) {
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
||||||
drop_and_set_mario_action(m, ACT_HEAD_STUCK_IN_GROUND, 0);
|
drop_and_set_mario_action(m, ACT_HEAD_STUCK_IN_GROUND, 0);
|
||||||
|
@ -791,7 +804,8 @@ s32 act_air_throw(struct MarioState *m) {
|
||||||
mario_throw_held_object(m);
|
mario_throw_held_object(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAH2 : SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
set_mario_animation(m, MARIO_ANIM_THROW_LIGHT_OBJECT);
|
set_mario_animation(m, MARIO_ANIM_THROW_LIGHT_OBJECT);
|
||||||
update_air_without_turn(m);
|
update_air_without_turn(m);
|
||||||
|
|
||||||
|
@ -935,7 +949,8 @@ s32 act_ground_pound(struct MarioState *m) {
|
||||||
|
|
||||||
m->actionTimer++;
|
m->actionTimer++;
|
||||||
if (m->actionTimer >= m->marioObj->header.gfx.unk38.curAnim->unk08 + 4) {
|
if (m->actionTimer >= m->marioObj->header.gfx.unk38.curAnim->unk08 + 4) {
|
||||||
play_sound(SOUND_MARIO_GROUND_POUND_WAH, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_GROUND_POUND_WAH : SOUND_MARIO_GROUND_POUND_WAH, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->actionState = 1;
|
m->actionState = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -945,10 +960,11 @@ s32 act_ground_pound(struct MarioState *m) {
|
||||||
if (stepResult == AIR_STEP_LANDED) {
|
if (stepResult == AIR_STEP_LANDED) {
|
||||||
if (should_get_stuck_in_ground(m)) {
|
if (should_get_stuck_in_ground(m)) {
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
m->particleFlags |= PARTICLE_MIST_CIRCLE;
|
||||||
set_mario_action(m, ACT_BUTT_STUCK_IN_GROUND, 0);
|
set_mario_action(m, ACT_BUTT_STUCK_IN_GROUND, 0);
|
||||||
|
@ -1160,7 +1176,8 @@ s32 act_backward_air_kb(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_knockback_sound(m);
|
play_knockback_sound(m);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
common_air_knockback_step(m, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, -16.0f);
|
common_air_knockback_step(m, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, -16.0f);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1174,7 +1191,8 @@ s32 act_forward_air_kb(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_knockback_sound(m);
|
play_knockback_sound(m);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
common_air_knockback_step(m, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
|
common_air_knockback_step(m, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1184,7 +1202,8 @@ s32 act_hard_backward_air_kb(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_knockback_sound(m);
|
play_knockback_sound(m);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
common_air_knockback_step(m, ACT_HARD_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002,
|
common_air_knockback_step(m, ACT_HARD_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002,
|
||||||
-16.0f);
|
-16.0f);
|
||||||
|
@ -1195,7 +1214,8 @@ s32 act_hard_forward_air_kb(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_knockback_sound(m);
|
play_knockback_sound(m);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
common_air_knockback_step(m, ACT_HARD_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
|
common_air_knockback_step(m, ACT_HARD_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1209,7 +1229,8 @@ s32 act_thrown_backward(struct MarioState *m) {
|
||||||
landAction = ACT_BACKWARD_GROUND_KB;
|
landAction = ACT_BACKWARD_GROUND_KB;
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
common_air_knockback_step(m, landAction, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, m->forwardVel);
|
common_air_knockback_step(m, landAction, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, m->forwardVel);
|
||||||
|
|
||||||
|
@ -1227,7 +1248,8 @@ s32 act_thrown_forward(struct MarioState *m) {
|
||||||
landAction = ACT_FORWARD_GROUND_KB;
|
landAction = ACT_FORWARD_GROUND_KB;
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
if (common_air_knockback_step(m, landAction, ACT_HARD_FORWARD_GROUND_KB, 0x002D, m->forwardVel)
|
if (common_air_knockback_step(m, landAction, ACT_HARD_FORWARD_GROUND_KB, 0x002D, m->forwardVel)
|
||||||
== AIR_STEP_NONE) {
|
== AIR_STEP_NONE) {
|
||||||
|
@ -1251,7 +1273,8 @@ s32 act_soft_bonk(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_knockback_sound(m);
|
play_knockback_sound(m);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
common_air_knockback_step(m, ACT_FREEFALL_LAND, ACT_HARD_BACKWARD_GROUND_KB, 0x0056, m->forwardVel);
|
common_air_knockback_step(m, ACT_FREEFALL_LAND, ACT_HARD_BACKWARD_GROUND_KB, 0x0056, m->forwardVel);
|
||||||
|
@ -1281,7 +1304,8 @@ s32 act_getting_blown(struct MarioState *m) {
|
||||||
|
|
||||||
mario_set_forward_vel(m, m->forwardVel);
|
mario_set_forward_vel(m, m->forwardVel);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
set_mario_animation(m, MARIO_ANIM_BACKWARD_AIR_KB);
|
set_mario_animation(m, MARIO_ANIM_BACKWARD_AIR_KB);
|
||||||
|
|
||||||
|
@ -1509,11 +1533,12 @@ s32 act_hold_butt_slide_air(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_lava_boost(struct MarioState *m) {
|
s32 act_lava_boost(struct MarioState *m) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
|
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_ON_FIRE : SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
}
|
}
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_ON_FIRE : SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
||||||
m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);
|
m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);
|
||||||
|
@ -1529,7 +1554,7 @@ s32 act_lava_boost(struct MarioState *m) {
|
||||||
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
|
m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;
|
||||||
}
|
}
|
||||||
m->vel[1] = 84.0f;
|
m->vel[1] = 84.0f;
|
||||||
play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_ON_FIRE : SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
} else {
|
} else {
|
||||||
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
||||||
|
@ -1579,7 +1604,8 @@ s32 act_lava_boost(struct MarioState *m) {
|
||||||
|
|
||||||
s32 act_slide_kick(struct MarioState *m) {
|
s32 act_slide_kick(struct MarioState *m) {
|
||||||
if (m->actionTimer == 0) {
|
if (m->actionTimer == 0) {
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_HOOHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HOOHOO : SOUND_MARIO_HOOHOO);
|
||||||
set_mario_animation(m, MARIO_ANIM_SLIDE_KICK);
|
set_mario_animation(m, MARIO_ANIM_SLIDE_KICK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1632,7 +1658,8 @@ s32 act_jump_kick(struct MarioState *m) {
|
||||||
s32 animFrame;
|
s32 animFrame;
|
||||||
|
|
||||||
if (m->actionState == 0) {
|
if (m->actionState == 0) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_PUNCH_HOO, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_HOO : SOUND_MARIO_PUNCH_HOO, MARIO_ACTION_SOUND_PLAYED);
|
||||||
m->marioObj->header.gfx.unk38.animID = -1;
|
m->marioObj->header.gfx.unk38.animID = -1;
|
||||||
set_mario_animation(m, MARIO_ANIM_AIR_KICK);
|
set_mario_animation(m, MARIO_ANIM_AIR_KICK);
|
||||||
m->actionState = 1;
|
m->actionState = 1;
|
||||||
|
@ -1673,7 +1700,8 @@ s32 act_shot_from_cannon(struct MarioState *m) {
|
||||||
|
|
||||||
mario_set_forward_vel(m, m->forwardVel);
|
mario_set_forward_vel(m, m->forwardVel);
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
switch (perform_air_step(m, 0)) {
|
switch (perform_air_step(m, 0)) {
|
||||||
case AIR_STEP_NONE:
|
case AIR_STEP_NONE:
|
||||||
|
@ -1920,7 +1948,8 @@ s32 act_flying(struct MarioState *m) {
|
||||||
if (startPitch <= 0 && m->faceAngle[0] > 0 && m->forwardVel >= 48.0f) {
|
if (startPitch <= 0 && m->faceAngle[0] > 0 && m->forwardVel >= 48.0f) {
|
||||||
play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound(((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO_WAHA_YIPPEE : SOUND_MARIO_YAHOO_WAHA_YIPPEE) + ((gAudioRandom % 5) << 16),
|
||||||
m->marioObj->header.gfx.cameraToObject);
|
m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
queue_rumble_data_mario(m, 50, 40);
|
queue_rumble_data_mario(m, 50, 40);
|
||||||
|
@ -1944,7 +1973,8 @@ s32 act_riding_hoot(struct MarioState *m) {
|
||||||
m->usedObj->oInteractStatus = 0;
|
m->usedObj->oInteractStatus = 0;
|
||||||
m->usedObj->oHootMarioReleaseTime = gGlobalTimer;
|
m->usedObj->oHootMarioReleaseTime = gGlobalTimer;
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH : SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
queue_rumble_data_mario(m, 4, 40);
|
queue_rumble_data_mario(m, 4, 40);
|
||||||
return set_mario_action(m, ACT_FREEFALL, 0);
|
return set_mario_action(m, ACT_FREEFALL, 0);
|
||||||
}
|
}
|
||||||
|
@ -2001,7 +2031,8 @@ s32 act_flying_triple_jump(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO);
|
||||||
if (m->actionState == 0) {
|
if (m->actionState == 0) {
|
||||||
set_mario_animation(m, MARIO_ANIM_TRIPLE_JUMP_FLY);
|
set_mario_animation(m, MARIO_ANIM_TRIPLE_JUMP_FLY);
|
||||||
|
|
||||||
|
@ -2079,7 +2110,8 @@ s32 act_vertical_wind(struct MarioState *m) {
|
||||||
s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];
|
s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];
|
||||||
f32 intendedMag = m->intendedMag / 32.0f;
|
f32 intendedMag = m->intendedMag / 32.0f;
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_HERE_WE_GO, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
if (m->actionState == 0) {
|
if (m->actionState == 0) {
|
||||||
set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);
|
set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);
|
||||||
if (m->marioObj->header.gfx.unk38.animFrame == 1) {
|
if (m->marioObj->header.gfx.unk38.animFrame == 1) {
|
||||||
|
@ -2120,7 +2152,8 @@ s32 act_special_triple_jump(struct MarioState *m) {
|
||||||
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
return set_mario_action(m, ACT_GROUND_POUND, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO);
|
||||||
|
|
||||||
update_air_without_turn(m);
|
update_air_without_turn(m);
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include "obj_behaviors.h"
|
#include "obj_behaviors.h"
|
||||||
#include "level_update.h"
|
#include "level_update.h"
|
||||||
#include "mario_step.h"
|
#include "mario_step.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
#define POLE_NONE 0
|
#define POLE_NONE 0
|
||||||
#define POLE_TOUCHED_FLOOR 1
|
#define POLE_TOUCHED_FLOOR 1
|
||||||
|
@ -234,7 +236,8 @@ s32 act_climbing_pole(struct MarioState *m) {
|
||||||
|
|
||||||
s32 act_grab_pole_slow(struct MarioState *m) {
|
s32 act_grab_pole_slow(struct MarioState *m) {
|
||||||
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
|
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WHOA : SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
if (set_pole_position(m, 0.0f) == POLE_NONE) {
|
if (set_pole_position(m, 0.0f) == POLE_NONE) {
|
||||||
set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SHORT);
|
set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SHORT);
|
||||||
|
@ -251,7 +254,8 @@ s32 act_grab_pole_fast(struct MarioState *m) {
|
||||||
struct Object *marioObj = m->marioObj;
|
struct Object *marioObj = m->marioObj;
|
||||||
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
|
if (m->usedObj == NULL) { m->usedObj = cur_obj_find_nearest_pole(); }
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WHOA : SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
m->faceAngle[1] += marioObj->oMarioPoleYawVel;
|
m->faceAngle[1] += marioObj->oMarioPoleYawVel;
|
||||||
marioObj->oMarioPoleYawVel = marioObj->oMarioPoleYawVel * 8 / 10;
|
marioObj->oMarioPoleYawVel = marioObj->oMarioPoleYawVel * 8 / 10;
|
||||||
|
|
||||||
|
@ -597,7 +601,8 @@ s32 act_ledge_grab(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->actionArg == 0) {
|
if (m->actionArg == 0) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WHOA : SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_and_set_height_to_floor(m);
|
stop_and_set_height_to_floor(m);
|
||||||
|
@ -619,7 +624,8 @@ s32 act_ledge_climb_slow(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->actionTimer == 10) {
|
if (m->actionTimer == 10) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_EEUH, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_EEUH : SOUND_MARIO_EEUH, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE);
|
update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE);
|
||||||
|
@ -637,7 +643,8 @@ s32 act_ledge_climb_down(struct MarioState *m) {
|
||||||
return let_go_of_ledge(m);
|
return let_go_of_ledge(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WHOA : SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
update_ledge_climb(m, MARIO_ANIM_CLIMB_DOWN_LEDGE, ACT_LEDGE_GRAB);
|
update_ledge_climb(m, MARIO_ANIM_CLIMB_DOWN_LEDGE, ACT_LEDGE_GRAB);
|
||||||
m->actionArg = 1;
|
m->actionArg = 1;
|
||||||
|
@ -650,7 +657,8 @@ s32 act_ledge_climb_fast(struct MarioState *m) {
|
||||||
return let_go_of_ledge(m);
|
return let_go_of_ledge(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH2, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH2 : SOUND_MARIO_UH2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
update_ledge_climb(m, MARIO_ANIM_FAST_LEDGE_GRAB, ACT_IDLE);
|
update_ledge_climb(m, MARIO_ANIM_FAST_LEDGE_GRAB, ACT_IDLE);
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "obj_behaviors.h"
|
#include "obj_behaviors.h"
|
||||||
#include "../../include/libc/stdlib.h"
|
#include "../../include/libc/stdlib.h"
|
||||||
#include "pc/pc_main.h"
|
#include "pc/pc_main.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
#include "pc/network/network.h"
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
// TODO: put this elsewhere
|
// TODO: put this elsewhere
|
||||||
|
@ -648,6 +649,7 @@ s32 act_debug_free_move(struct MarioState *m) {
|
||||||
void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
|
void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
|
||||||
s32 dialogID;
|
s32 dialogID;
|
||||||
if (m->actionState == 0) {
|
if (m->actionState == 0) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
switch (++m->actionTimer) {
|
switch (++m->actionTimer) {
|
||||||
case 1:
|
case 1:
|
||||||
for (int i = 0; i < MAX_PLAYERS; i++) {
|
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||||
|
@ -674,7 +676,7 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 42:
|
case 42:
|
||||||
play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 80:
|
case 80:
|
||||||
|
@ -769,7 +771,8 @@ s32 act_standing_death(struct MarioState *m) {
|
||||||
return set_mario_action(m, ACT_SUFFOCATION, 0);
|
return set_mario_action(m, ACT_SUFFOCATION, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
common_death_handler(m, MARIO_ANIM_DYING_FALL_OVER, 80);
|
common_death_handler(m, MARIO_ANIM_DYING_FALL_OVER, 80);
|
||||||
if (m->marioObj->header.gfx.unk38.animFrame == 77) {
|
if (m->marioObj->header.gfx.unk38.animFrame == 77) {
|
||||||
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
||||||
|
@ -778,19 +781,22 @@ s32 act_standing_death(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_electrocution(struct MarioState *m) {
|
s32 act_electrocution(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
common_death_handler(m, MARIO_ANIM_ELECTROCUTION, 43);
|
common_death_handler(m, MARIO_ANIM_ELECTROCUTION, 43);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_suffocation(struct MarioState *m) {
|
s32 act_suffocation(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
common_death_handler(m, MARIO_ANIM_SUFFOCATING, 86);
|
common_death_handler(m, MARIO_ANIM_SUFFOCATING, 86);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_death_on_back(struct MarioState *m) {
|
s32 act_death_on_back(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
if (common_death_handler(m, MARIO_ANIM_DYING_ON_BACK, 54) == 40) {
|
if (common_death_handler(m, MARIO_ANIM_DYING_ON_BACK, 54) == 40) {
|
||||||
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
||||||
}
|
}
|
||||||
|
@ -798,7 +804,8 @@ s32 act_death_on_back(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_death_on_stomach(struct MarioState *m) {
|
s32 act_death_on_stomach(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
if (common_death_handler(m, MARIO_ANIM_DYING_ON_STOMACH, 37) == 37) {
|
if (common_death_handler(m, MARIO_ANIM_DYING_ON_STOMACH, 37) == 37) {
|
||||||
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
||||||
}
|
}
|
||||||
|
@ -813,7 +820,8 @@ s32 act_quicksand_death(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
if (m->actionState == 1) {
|
if (m->actionState == 1) {
|
||||||
if (m->quicksandDepth >= 100.0f) {
|
if (m->quicksandDepth >= 100.0f) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
if ((m->quicksandDepth += 5.0f) >= 180.0f) {
|
if ((m->quicksandDepth += 5.0f) >= 180.0f) {
|
||||||
//level_trigger_warp(m, WARP_OP_DEATH);
|
//level_trigger_warp(m, WARP_OP_DEATH);
|
||||||
|
@ -827,7 +835,8 @@ s32 act_quicksand_death(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_eaten_by_bubba(struct MarioState *m) {
|
s32 act_eaten_by_bubba(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DYING : SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
set_mario_animation(m, MARIO_ANIM_A_POSE);
|
set_mario_animation(m, MARIO_ANIM_A_POSE);
|
||||||
//m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
|
//m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
|
||||||
if (m != &gMarioStates[0]) {
|
if (m != &gMarioStates[0]) {
|
||||||
|
@ -1092,7 +1101,8 @@ s32 act_emerge_from_pipe(struct MarioState *m) {
|
||||||
|
|
||||||
marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
|
marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
if (gCurrLevelNum == LEVEL_THI) {
|
if (gCurrLevelNum == LEVEL_THI) {
|
||||||
if (gCurrAreaIndex == 2) {
|
if (gCurrAreaIndex == 2) {
|
||||||
|
@ -1274,10 +1284,11 @@ s32 act_exit_land_save_dialog(struct MarioState *m) {
|
||||||
s32 act_death_exit(struct MarioState *m) {
|
s32 act_death_exit(struct MarioState *m) {
|
||||||
if (15 < m->actionTimer++
|
if (15 < m->actionTimer++
|
||||||
&& launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, -32.0f)) {
|
&& launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, -32.0f)) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
//m->numLives--;
|
//m->numLives--;
|
||||||
|
@ -1291,10 +1302,11 @@ s32 act_death_exit(struct MarioState *m) {
|
||||||
|
|
||||||
s32 act_unused_death_exit(struct MarioState *m) {
|
s32 act_unused_death_exit(struct MarioState *m) {
|
||||||
if (launch_mario_until_land(m, ACT_FREEFALL_LAND_STOP, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
|
if (launch_mario_until_land(m, ACT_FREEFALL_LAND_STOP, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
//m->numLives--;
|
//m->numLives--;
|
||||||
// restore 7.75 units of health
|
// restore 7.75 units of health
|
||||||
|
@ -1307,10 +1319,11 @@ s32 act_unused_death_exit(struct MarioState *m) {
|
||||||
|
|
||||||
s32 act_falling_death_exit(struct MarioState *m) {
|
s32 act_falling_death_exit(struct MarioState *m) {
|
||||||
if (launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
|
if (launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, 0.0f)) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
//m->numLives--;
|
//m->numLives--;
|
||||||
|
@ -1326,7 +1339,8 @@ s32 act_falling_death_exit(struct MarioState *m) {
|
||||||
s32 act_special_exit_airborne(struct MarioState *m) {
|
s32 act_special_exit_airborne(struct MarioState *m) {
|
||||||
struct Object *marioObj = m->marioObj;
|
struct Object *marioObj = m->marioObj;
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
|
|
||||||
if (m->actionTimer++ < 11) {
|
if (m->actionTimer++ < 11) {
|
||||||
marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
|
marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;
|
||||||
|
@ -1574,7 +1588,8 @@ s32 act_teleport_fade_in(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 act_shocked(struct MarioState *m) {
|
s32 act_shocked(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
||||||
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
|
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
|
||||||
|
|
||||||
|
@ -1636,7 +1651,8 @@ s32 act_squished(struct MarioState *m) {
|
||||||
if (!(m->flags & MARIO_METAL_CAP) && m->invincTimer == 0) {
|
if (!(m->flags & MARIO_METAL_CAP) && m->invincTimer == 0) {
|
||||||
// cap on: 3 units; cap off: 4.5 units
|
// cap on: 3 units; cap off: 4.5 units
|
||||||
m->hurtCounter += m->flags & MARIO_CAP_ON_HEAD ? 12 : 18;
|
m->hurtCounter += m->flags & MARIO_CAP_ON_HEAD ? 12 : 18;
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Both of the 1.8's are really floats, but one of them has to
|
// Both of the 1.8's are really floats, but one of them has to
|
||||||
|
@ -1855,12 +1871,13 @@ static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {
|
||||||
if (m->actionTimer++ >= 118) {
|
if (m->actionTimer++ >= 118) {
|
||||||
m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
|
m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;
|
||||||
|
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
// For some reason these calls were swapped.
|
// For some reason these calls were swapped.
|
||||||
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
|
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
|
play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1872,7 +1889,7 @@ static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {
|
||||||
sound_banks_enable(2, 0x0330);
|
sound_banks_enable(2, 0x0330);
|
||||||
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
|
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound(SOUND_MARIO_HAHA, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HAHA : SOUND_MARIO_HAHA, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
advance_cutscene_step(m);
|
advance_cutscene_step(m);
|
||||||
}
|
}
|
||||||
|
@ -2008,18 +2025,19 @@ static s32 jumbo_star_cutscene_taking_off(struct MarioState *m) {
|
||||||
marioObj->rawData.asF32[0x22] -= 32.0f;
|
marioObj->rawData.asF32[0x22] -= 32.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
switch (animFrame) {
|
switch (animFrame) {
|
||||||
case 3:
|
case 3:
|
||||||
play_sound(SOUND_MARIO_YAH_WAH_HOO + (gAudioRandom % 3 << 16),
|
play_sound(((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAH_WAH_HOO : SOUND_MARIO_YAH_WAH_HOO) + (gAudioRandom % 3 << 16),
|
||||||
m->marioObj->header.gfx.cameraToObject);
|
m->marioObj->header.gfx.cameraToObject);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 28:
|
case 28:
|
||||||
play_sound(SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HOOHOO : SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 60:
|
case 60:
|
||||||
play_sound(SOUND_MARIO_YAHOO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAHOO : SOUND_MARIO_YAHOO, m->marioObj->header.gfx.cameraToObject);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m->particleFlags |= PARTICLE_SPARKLES;
|
m->particleFlags |= PARTICLE_SPARKLES;
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "thread6.h"
|
#include "thread6.h"
|
||||||
#include "pc/configfile.h"
|
#include "pc/configfile.h"
|
||||||
#include "pc/cheats.h"
|
#include "pc/cheats.h"
|
||||||
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
struct LandingAction {
|
struct LandingAction {
|
||||||
s16 numFrames;
|
s16 numFrames;
|
||||||
|
@ -1386,7 +1387,8 @@ void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32
|
||||||
case GROUND_STEP_LEFT_GROUND:
|
case GROUND_STEP_LEFT_GROUND:
|
||||||
set_mario_action(m, airAction, 0);
|
set_mario_action(m, airAction, 0);
|
||||||
if (m->forwardVel < -50.0f || 50.0f < m->forwardVel) {
|
if (m->forwardVel < -50.0f || 50.0f < m->forwardVel) {
|
||||||
play_sound(SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HOOHOO : SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1605,13 +1607,14 @@ s32 common_ground_knockback_action(struct MarioState *m, s32 animation, s32 arg2
|
||||||
play_mario_heavy_landing_sound_once(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
play_mario_heavy_landing_sound_once(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
if (arg4 > 0) {
|
if (arg4 > 0) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_ATTACKED : SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);
|
||||||
} else {
|
} else {
|
||||||
#ifdef VERSION_JP
|
#ifdef VERSION_JP
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_OOOF, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF : SOUND_MARIO_OOOF, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#else
|
#else
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_OOOF2, MARIO_MARIO_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_OOOF2 : SOUND_MARIO_OOOF2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1662,7 +1665,8 @@ s32 act_hard_backward_ground_kb(struct MarioState *m) {
|
||||||
|
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
if (val04 == 0x36 && m->prevAction == ACT_SPECIAL_DEATH_EXIT) {
|
if (val04 == 0x36 && m->prevAction == ACT_SPECIAL_DEATH_EXIT) {
|
||||||
play_sound(SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_MAMA_MIA : SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1719,7 +1723,8 @@ s32 act_death_exit_land(struct MarioState *m) {
|
||||||
val04 = set_mario_animation(m, MARIO_ANIM_FALL_OVER_BACKWARDS);
|
val04 = set_mario_animation(m, MARIO_ANIM_FALL_OVER_BACKWARDS);
|
||||||
|
|
||||||
if (val04 == 0x36) {
|
if (val04 == 0x36) {
|
||||||
play_sound(SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_MAMA_MIA : SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
if (val04 == 0x44) {
|
if (val04 == 0x44) {
|
||||||
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
|
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
|
||||||
|
@ -1874,7 +1879,8 @@ s32 act_long_jump_land(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_UH2_2, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_UH2_2 : SOUND_MARIO_UH2_2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
common_landing_action(m,
|
common_landing_action(m,
|
||||||
|
@ -1900,7 +1906,8 @@ s32 act_triple_jump_land(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HAHA : SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);
|
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);
|
||||||
|
@ -1917,7 +1924,8 @@ s32 act_backflip_land(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
if (!(m->input & INPUT_NONZERO_ANALOG)) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HAHA : SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);
|
common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "engine/math_util.h"
|
#include "engine/math_util.h"
|
||||||
#include "thread6.h"
|
#include "thread6.h"
|
||||||
#include "behavior_data.h"
|
#include "behavior_data.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
#include "pc/network/network.h"
|
#include "pc/network/network.h"
|
||||||
#include "object_helpers.h"
|
#include "object_helpers.h"
|
||||||
|
|
||||||
|
@ -38,9 +39,10 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
|
||||||
endAction = ACT_IDLE, crouchEndAction = ACT_CROUCHING;
|
endAction = ACT_IDLE, crouchEndAction = ACT_CROUCHING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
switch (m->actionArg) {
|
switch (m->actionArg) {
|
||||||
case 0:
|
case 0:
|
||||||
play_sound(SOUND_MARIO_PUNCH_YAH, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_YAH : SOUND_MARIO_PUNCH_YAH, m->marioObj->header.gfx.cameraToObject);
|
||||||
// Fall-through:
|
// Fall-through:
|
||||||
case 1:
|
case 1:
|
||||||
set_mario_animation(m, MARIO_ANIM_FIRST_PUNCH);
|
set_mario_animation(m, MARIO_ANIM_FIRST_PUNCH);
|
||||||
|
@ -80,7 +82,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
play_sound(SOUND_MARIO_PUNCH_WAH, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_YAH : SOUND_MARIO_PUNCH_WAH, m->marioObj->header.gfx.cameraToObject);
|
||||||
// Fall-through:
|
// Fall-through:
|
||||||
case 4:
|
case 4:
|
||||||
set_mario_animation(m, MARIO_ANIM_SECOND_PUNCH);
|
set_mario_animation(m, MARIO_ANIM_SECOND_PUNCH);
|
||||||
|
@ -115,7 +117,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
play_mario_action_sound(m, SOUND_MARIO_PUNCH_HOO, 1);
|
play_mario_action_sound(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_HOO : SOUND_MARIO_PUNCH_HOO, 1);
|
||||||
animFrame = set_mario_animation(m, MARIO_ANIM_GROUND_KICK);
|
animFrame = set_mario_animation(m, MARIO_ANIM_GROUND_KICK);
|
||||||
if (animFrame == 0) {
|
if (animFrame == 0) {
|
||||||
m->marioBodyState->punchState = (2 << 6) | 6;
|
m->marioBodyState->punchState = (2 << 6) | 6;
|
||||||
|
@ -131,7 +133,7 @@ s32 mario_update_punch_sequence(struct MarioState *m) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
play_mario_action_sound(m, SOUND_MARIO_PUNCH_HOO, 1);
|
play_mario_action_sound(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_HOO : SOUND_MARIO_PUNCH_HOO, 1);
|
||||||
set_mario_animation(m, MARIO_ANIM_BREAKDANCE);
|
set_mario_animation(m, MARIO_ANIM_BREAKDANCE);
|
||||||
animFrame = m->marioObj->header.gfx.unk38.animFrame;
|
animFrame = m->marioObj->header.gfx.unk38.animFrame;
|
||||||
|
|
||||||
|
@ -191,7 +193,8 @@ s32 act_picking_up(struct MarioState *m) {
|
||||||
// slot (cloning via fake object).
|
// slot (cloning via fake object).
|
||||||
mario_grab_used_object(m);
|
mario_grab_used_object(m);
|
||||||
if (m->heldObj != NULL) {
|
if (m->heldObj != NULL) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_HRMM, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_HRMM : SOUND_MARIO_HRMM, MARIO_MARIO_SOUND_PLAYED);
|
||||||
m->actionState = 1;
|
m->actionState = 1;
|
||||||
} else {
|
} else {
|
||||||
set_mario_action(m, ACT_IDLE, 0);
|
set_mario_action(m, ACT_IDLE, 0);
|
||||||
|
@ -271,7 +274,8 @@ s32 act_throwing(struct MarioState *m) {
|
||||||
|
|
||||||
if (++m->actionTimer == 7) {
|
if (++m->actionTimer == 7) {
|
||||||
mario_throw_held_object(m);
|
mario_throw_held_object(m);
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAH2 : SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
|
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
|
||||||
queue_rumble_data_mario(m, 3, 50);
|
queue_rumble_data_mario(m, 3, 50);
|
||||||
}
|
}
|
||||||
|
@ -291,7 +295,8 @@ s32 act_heavy_throw(struct MarioState *m) {
|
||||||
|
|
||||||
if (++m->actionTimer == 13) {
|
if (++m->actionTimer == 13) {
|
||||||
mario_drop_held_object(m);
|
mario_drop_held_object(m);
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAH2 : SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);
|
||||||
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
|
play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);
|
||||||
queue_rumble_data_mario(m, 3, 50);
|
queue_rumble_data_mario(m, 3, 50);
|
||||||
}
|
}
|
||||||
|
@ -328,7 +333,8 @@ s32 act_picking_up_bowser(struct MarioState *m) {
|
||||||
mario_grab_used_object(m);
|
mario_grab_used_object(m);
|
||||||
if (m->heldObj != NULL) {
|
if (m->heldObj != NULL) {
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
play_sound(SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HRMM : SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject);
|
||||||
if (m->playerIndex == 0) {
|
if (m->playerIndex == 0) {
|
||||||
network_send_object(m->heldObj);
|
network_send_object(m->heldObj);
|
||||||
} else {
|
} else {
|
||||||
|
@ -357,7 +363,8 @@ s32 act_holding_bowser(struct MarioState *m) {
|
||||||
mario_grab_used_object(m);
|
mario_grab_used_object(m);
|
||||||
if (m->heldObj != NULL) {
|
if (m->heldObj != NULL) {
|
||||||
queue_rumble_data_mario(m, 5, 80);
|
queue_rumble_data_mario(m, 5, 80);
|
||||||
play_sound(SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HRMM : SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject);
|
||||||
} else {
|
} else {
|
||||||
set_mario_action(m, ACT_IDLE, 0);
|
set_mario_action(m, ACT_IDLE, 0);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -368,14 +375,15 @@ s32 act_holding_bowser(struct MarioState *m) {
|
||||||
s16 spin;
|
s16 spin;
|
||||||
|
|
||||||
if (m->playerIndex == 0 && m->input & INPUT_B_PRESSED) {
|
if (m->playerIndex == 0 && m->input & INPUT_B_PRESSED) {
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
if (m->angleVel[1] <= -0xE00 || m->angleVel[1] >= 0xE00) {
|
if (m->angleVel[1] <= -0xE00 || m->angleVel[1] >= 0xE00) {
|
||||||
play_sound(SOUND_MARIO_SO_LONGA_BOWSER, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SO_LONGA_BOWSER : SOUND_MARIO_SO_LONGA_BOWSER, m->marioObj->header.gfx.cameraToObject);
|
||||||
} else {
|
} else {
|
||||||
play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HERE_WE_GO : SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
return set_mario_action(m, ACT_RELEASING_BOWSER, 0);
|
return set_mario_action(m, ACT_RELEASING_BOWSER, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
#include "sound_init.h"
|
#include "sound_init.h"
|
||||||
#include "surface_terrains.h"
|
#include "surface_terrains.h"
|
||||||
#include "thread6.h"
|
#include "thread6.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
s32 check_common_idle_cancels(struct MarioState *m) {
|
s32 check_common_idle_cancels(struct MarioState *m) {
|
||||||
mario_drop_held_object(m);
|
mario_drop_held_object(m);
|
||||||
|
@ -243,18 +245,21 @@ s32 act_start_sleeping(struct MarioState *m) {
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
if (m->actionState == 2) {
|
if (m->actionState == 2) {
|
||||||
if (sp24 == -1) {
|
if (sp24 == -1) {
|
||||||
play_sound(SOUND_MARIO_YAWNING, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAWNING : SOUND_MARIO_YAWNING, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->actionState == 1) {
|
if (m->actionState == 1) {
|
||||||
if (sp24 == -1) {
|
if (sp24 == -1) {
|
||||||
play_sound(SOUND_MARIO_IMA_TIRED, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_IMA_TIRED : SOUND_MARIO_IMA_TIRED, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (m->actionState == 2) {
|
if (m->actionState == 2) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_YAWNING, MARIO_MARIO_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_YAWNING : SOUND_MARIO_YAWNING, MARIO_MARIO_SOUND_PLAYED);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -289,12 +294,14 @@ s32 act_sleeping(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp24 == 2) {
|
if (sp24 == 2) {
|
||||||
play_sound(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING1 : SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->isSnoring = TRUE;
|
m->isSnoring = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp24 == 20) {
|
if (sp24 == 20) {
|
||||||
play_sound(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING2 : SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->isSnoring = TRUE;
|
m->isSnoring = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,17 +325,18 @@ s32 act_sleeping(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
sp24 = set_mario_animation(m, MARIO_ANIM_SLEEP_LYING);
|
sp24 = set_mario_animation(m, MARIO_ANIM_SLEEP_LYING);
|
||||||
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_SNORING3, MARIO_ACTION_SOUND_PLAYED);
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING3 : SOUND_MARIO_SNORING3, MARIO_ACTION_SOUND_PLAYED);
|
||||||
m->isSnoring = TRUE;
|
m->isSnoring = TRUE;
|
||||||
#else
|
#else
|
||||||
if (sp24 == 2) {
|
if (sp24 == 2) {
|
||||||
play_sound(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING2 : SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->isSnoring = TRUE;
|
m->isSnoring = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp24 == 25) {
|
if (sp24 == 25) {
|
||||||
play_sound(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING1 : SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
||||||
m->isSnoring = TRUE;
|
m->isSnoring = TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -340,10 +348,11 @@ s32 act_sleeping(struct MarioState *m) {
|
||||||
|
|
||||||
s32 act_waking_up(struct MarioState *m) {
|
s32 act_waking_up(struct MarioState *m) {
|
||||||
if (!m->actionTimer) {
|
if (!m->actionTimer) {
|
||||||
func_803205E8(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
func_803205E8(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING1 : SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING2 : SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
func_803205E8(SOUND_MARIO_SNORING3, m->marioObj->header.gfx.cameraToObject);
|
func_803205E8((configLuigiSounds && isLuigi) ? SOUND_LUIGI_SNORING3 : SOUND_MARIO_SNORING3, m->marioObj->header.gfx.cameraToObject);
|
||||||
#endif
|
#endif
|
||||||
if (m->playerIndex == 0) {
|
if (m->playerIndex == 0) {
|
||||||
raise_background_noise(2);
|
raise_background_noise(2);
|
||||||
|
@ -400,7 +409,8 @@ s32 act_shivering(struct MarioState *m) {
|
||||||
sp24 = set_mario_animation(m, MARIO_ANIM_SHIVERING_WARMING_HAND);
|
sp24 = set_mario_animation(m, MARIO_ANIM_SHIVERING_WARMING_HAND);
|
||||||
if (sp24 == 0x31) {
|
if (sp24 == 0x31) {
|
||||||
m->particleFlags |= PARTICLE_BREATH;
|
m->particleFlags |= PARTICLE_BREATH;
|
||||||
play_sound(SOUND_MARIO_PANTING_COLD, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_PANTING_COLD : SOUND_MARIO_PANTING_COLD, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
if (sp24 == 7 || sp24 == 0x51) {
|
if (sp24 == 7 || sp24 == 0x51) {
|
||||||
play_sound(SOUND_ACTION_CLAP_HANDS_COLD, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_ACTION_CLAP_HANDS_COLD, m->marioObj->header.gfx.cameraToObject);
|
||||||
|
@ -438,15 +448,18 @@ s32 act_coughing(struct MarioState *m) {
|
||||||
stationary_ground_step(m);
|
stationary_ground_step(m);
|
||||||
sp1C = set_mario_animation(m, MARIO_ANIM_COUGHING);
|
sp1C = set_mario_animation(m, MARIO_ANIM_COUGHING);
|
||||||
if (sp1C == 0x19 || sp1C == 0x23) {
|
if (sp1C == 0x19 || sp1C == 0x23) {
|
||||||
play_sound(SOUND_MARIO_COUGHING3, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_COUGHING3 : SOUND_MARIO_COUGHING3, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp1C == 0x32 || sp1C == 0x3A) {
|
if (sp1C == 0x32 || sp1C == 0x3A) {
|
||||||
play_sound(SOUND_MARIO_COUGHING2, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_COUGHING2 : SOUND_MARIO_COUGHING2, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp1C == 0x47 || sp1C == 0x50) {
|
if (sp1C == 0x47 || sp1C == 0x50) {
|
||||||
play_sound(SOUND_MARIO_COUGHING1, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_COUGHING1 : SOUND_MARIO_COUGHING1, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -593,7 +606,8 @@ s32 act_panting(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set_mario_animation(m, MARIO_ANIM_WALK_PANTING) == 1) {
|
if (set_mario_animation(m, MARIO_ANIM_WALK_PANTING) == 1) {
|
||||||
play_sound(SOUND_MARIO_PANTING + ((gAudioRandom % 3U) << 0x10),
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_PANTING : SOUND_MARIO_PANTING + ((gAudioRandom % 3U) << 0x10),
|
||||||
m->marioObj->header.gfx.cameraToObject);
|
m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "behavior_data.h"
|
#include "behavior_data.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
#include "thread6.h"
|
#include "thread6.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
#define MIN_SWIM_STRENGTH 160
|
#define MIN_SWIM_STRENGTH 160
|
||||||
#define MIN_SWIM_SPEED 16.0f
|
#define MIN_SWIM_SPEED 16.0f
|
||||||
|
@ -888,7 +890,8 @@ static s32 act_forward_water_kb(struct MarioState *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static s32 act_water_shocked(struct MarioState *m) {
|
static s32 act_water_shocked(struct MarioState *m) {
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_WAAAOOOW : SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);
|
||||||
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
|
||||||
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
|
if (m->playerIndex == 0) { set_camera_shake_from_hit(SHAKE_SHOCK); }
|
||||||
|
|
||||||
|
@ -928,7 +931,8 @@ static s32 act_drowning(struct MarioState *m) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
play_sound_if_no_flag(m, SOUND_MARIO_DROWNING, MARIO_ACTION_SOUND_PLAYED);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound_if_no_flag(m, (configLuigiSounds && isLuigi) ? SOUND_LUIGI_DROWNING : SOUND_MARIO_DROWNING, MARIO_ACTION_SOUND_PLAYED);
|
||||||
stationary_slow_down(m);
|
stationary_slow_down(m);
|
||||||
perform_water_step(m);
|
perform_water_step(m);
|
||||||
|
|
||||||
|
@ -976,7 +980,8 @@ static s32 act_water_plunge(struct MarioState *m) {
|
||||||
if (m->actionState == 0) {
|
if (m->actionState == 0) {
|
||||||
play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject);
|
play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject);
|
||||||
if (m->peakHeight - m->pos[1] > 1150.0f) {
|
if (m->peakHeight - m->pos[1] > 1150.0f) {
|
||||||
play_sound(SOUND_MARIO_HAHA_2, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_HAHA_2 : SOUND_MARIO_HAHA_2, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
m->particleFlags |= PARTICLE_WATER_SPLASH;
|
m->particleFlags |= PARTICLE_WATER_SPLASH;
|
||||||
|
|
|
@ -90,6 +90,7 @@ static const u8 optsAudioStr[][32] = {
|
||||||
{ TEXT_OPT_MUSVOLUME },
|
{ TEXT_OPT_MUSVOLUME },
|
||||||
{ TEXT_OPT_SFXVOLUME },
|
{ TEXT_OPT_SFXVOLUME },
|
||||||
{ TEXT_OPT_ENVVOLUME },
|
{ TEXT_OPT_ENVVOLUME },
|
||||||
|
{ TEXT_OPT_LUIGISND },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 optsCheatsStr[][64] = {
|
static const u8 optsCheatsStr[][64] = {
|
||||||
|
@ -271,6 +272,7 @@ static struct Option optsAudio[] = {
|
||||||
DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1),
|
DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1),
|
||||||
DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1),
|
DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1),
|
||||||
DEF_OPT_SCROLL( optsAudioStr[3], &configEnvVolume, 0, MAX_VOLUME, 1),
|
DEF_OPT_SCROLL( optsAudioStr[3], &configEnvVolume, 0, MAX_VOLUME, 1),
|
||||||
|
DEF_OPT_TOGGLE( optsAudioStr[4], &configLuigiSounds ),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct Option optsCheats[] = {
|
static struct Option optsCheats[] = {
|
||||||
|
|
|
@ -106,6 +106,7 @@ unsigned int configPlayerInteraction = 1;
|
||||||
unsigned int configPlayerKnockbackStrength = 25;
|
unsigned int configPlayerKnockbackStrength = 25;
|
||||||
unsigned int configStayInLevelAfterStar = 0;
|
unsigned int configStayInLevelAfterStar = 0;
|
||||||
unsigned int configNetworkSystem = 0;
|
unsigned int configNetworkSystem = 0;
|
||||||
|
bool configLuigiSounds = true;
|
||||||
|
|
||||||
static const struct ConfigOption options[] = {
|
static const struct ConfigOption options[] = {
|
||||||
{.name = "fullscreen", .type = CONFIG_TYPE_BOOL, .boolValue = &configWindow.fullscreen},
|
{.name = "fullscreen", .type = CONFIG_TYPE_BOOL, .boolValue = &configWindow.fullscreen},
|
||||||
|
@ -165,6 +166,7 @@ static const struct ConfigOption options[] = {
|
||||||
{.name = "coop_player_knockback_strength", .type = CONFIG_TYPE_UINT , .uintValue = &configPlayerKnockbackStrength},
|
{.name = "coop_player_knockback_strength", .type = CONFIG_TYPE_UINT , .uintValue = &configPlayerKnockbackStrength},
|
||||||
{.name = "coop_stay_in_level_after_star", .type = CONFIG_TYPE_UINT , .uintValue = &configStayInLevelAfterStar},
|
{.name = "coop_stay_in_level_after_star", .type = CONFIG_TYPE_UINT , .uintValue = &configStayInLevelAfterStar},
|
||||||
{.name = "coop_network_system", .type = CONFIG_TYPE_UINT , .uintValue = &configNetworkSystem},
|
{.name = "coop_network_system", .type = CONFIG_TYPE_UINT , .uintValue = &configNetworkSystem},
|
||||||
|
{.name = "coop_luigi_sounds", .type = CONFIG_TYPE_BOOL , .boolValue = &configLuigiSounds},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Reads an entire line from a file (excluding the newline character) and returns an allocated string
|
// Reads an entire line from a file (excluding the newline character) and returns an allocated string
|
||||||
|
|
|
@ -72,6 +72,7 @@ extern unsigned int configPlayerInteraction;
|
||||||
extern unsigned int configPlayerKnockbackStrength;
|
extern unsigned int configPlayerKnockbackStrength;
|
||||||
extern unsigned int configStayInLevelAfterStar;
|
extern unsigned int configStayInLevelAfterStar;
|
||||||
extern unsigned int configNetworkSystem;
|
extern unsigned int configNetworkSystem;
|
||||||
|
extern bool configLuigiSounds;
|
||||||
|
|
||||||
void configfile_load(const char *filename);
|
void configfile_load(const char *filename);
|
||||||
void configfile_save(const char *filename);
|
void configfile_save(const char *filename);
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "engine/surface_collision.h"
|
#include "engine/surface_collision.h"
|
||||||
#include "game/object_list_processor.h"
|
#include "game/object_list_processor.h"
|
||||||
#include "game/chat.h"
|
#include "game/chat.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
struct PacketPlayerData {
|
struct PacketPlayerData {
|
||||||
|
@ -325,7 +326,8 @@ void network_receive_player(struct Packet* p) {
|
||||||
if ((m->action == ACT_PUNCHING || m->action == ACT_MOVE_PUNCHING)) {
|
if ((m->action == ACT_PUNCHING || m->action == ACT_MOVE_PUNCHING)) {
|
||||||
// play first punching sound, otherwise it will be missed
|
// play first punching sound, otherwise it will be missed
|
||||||
if (m->action != oldData.action) {
|
if (m->action != oldData.action) {
|
||||||
play_sound(SOUND_MARIO_PUNCH_YAH, m->marioObj->header.gfx.cameraToObject);
|
u8 isLuigi = (gNetworkType == NT_SERVER) ? (m->playerIndex != 0) : (m->playerIndex == 0);
|
||||||
|
play_sound((configLuigiSounds && isLuigi) ? SOUND_LUIGI_PUNCH_YAH : SOUND_MARIO_PUNCH_YAH, m->marioObj->header.gfx.cameraToObject);
|
||||||
}
|
}
|
||||||
// make the first punch large, otherwise it will be missed
|
// make the first punch large, otherwise it will be missed
|
||||||
if (m->actionArg == 2 && oldData.actionArg == 1) {
|
if (m->actionArg == 2 && oldData.actionArg == 1) {
|
||||||
|
|
Loading…
Reference in a new issue