Commit Graph

605 Commits

Author SHA1 Message Date
Ethan Roseman
63c41f1db4 PR comment 2020-11-07 09:33:22 -05:00
Ethan Roseman
eff6fe2f10 vec3f 2020-11-06 12:32:30 -05:00
Ethan Roseman
b0001034bf format 2020-11-05 19:37:31 -05:00
Ethan Roseman
5ae79b7f86 Various decomp 2020-11-05 19:30:17 -05:00
JoshDuMan
05712a9ad3 Address comments 2020-11-03 00:59:39 -05:00
JoshDuMan
58e04b19ba Merge https://github.com/ethteck/papermario into stuff 2020-11-02 18:49:38 -05:00
Ethan Roseman
cadd7693a9 fixing paths 2020-11-02 16:41:24 -05:00
Ethan Roseman
d16d6a3c1a comment 2020-11-02 16:31:54 -05:00
Ethan Roseman
d604f179c8 PR comments 2020-11-02 16:24:18 -05:00
Ethan Roseman
202243349f format 2020-11-02 16:10:37 -05:00
Ethan Roseman
087b30ab35 a couple more kmrs 2020-11-02 16:04:59 -05:00
Ethan Roseman
285396f142 CheckItemFlags40 2020-11-02 15:48:48 -05:00
Ethan Roseman
743619e28f a few more 2020-11-02 15:19:04 -05:00
Ethan Roseman
5a0dea8665 a few more kmr funcs 2020-11-02 14:53:06 -05:00
Ethan Roseman
0df7ef28a3 gCurrentEncounter offsets + some funcs 2020-11-02 14:21:58 -05:00
Alex Bates
0448af546c merge master 2020-11-02 17:22:42 +00:00
Alex Bates
dd2eb476dc remove sinful ld_addrs usage 2020-11-02 17:16:26 +00:00
JoshDuMan
ee3c059779 Work on world functions. 2020-11-02 02:07:02 -05:00
Ethan Roseman
b6bc2fb604 asm refresh + new splat / symbol_addrs format 2020-11-01 17:36:59 -05:00
Alex Bates
dd4b9ec6e5 merge master 2020-10-31 20:10:22 +00:00
Alex Bates
abcda77e2c MapInitialiser -> MapInit 2020-10-31 20:04:33 +00:00
Ethan Roseman
9151bf2fe4 NotDoesScriptExist -> AwaitScriptComplete 2020-10-31 15:35:43 -04:00
Ethan Roseman
0f3d65f7c9 cleanup 2020-10-31 15:34:10 -04:00
Ethan Roseman
bfbae5e26a remove padding3 2020-10-31 15:04:45 -04:00
Ethan Roseman
54cd46a228 Merge branch 'master' into maps 2020-10-31 11:44:54 -04:00
Ethan Roseman
0e383a411b kmr_03 data OK but messy 2020-10-31 11:44:24 -04:00
alex
ed62a6999b
Merge branch 'master' into audio 2020-10-31 05:57:48 +00:00
Alex Bates
efc303a70d avoid #including all map headers in world.c 2020-10-31 04:49:04 +00:00
Ethan Roseman
90641b1b06 kmr_03 2020-10-30 19:42:25 -04:00
Alex Bates
f0c4df447a squash warnings 2020-10-30 23:41:49 +00:00
Ethan Roseman
fc5dcf43ea Camera0MoveFlag1 2020-10-30 19:25:07 -04:00
Ethan Roseman
a840d81a29 SetCamera0MoveFlagNeg1 2020-10-30 19:21:00 -04:00
Ethan Roseman
cff33e37f4 UnkPositionFunc 2020-10-30 19:11:46 -04:00
Ethan Roseman
51b1c9acfb CheckPartnerFlags1000 2020-10-30 19:03:29 -04:00
Ethan Roseman
b0d5e8ee62 3 more 2020-10-30 18:41:04 -04:00
Ethan Roseman
31fc3ab212 UnkPartnerFuncs 2020-10-30 17:50:48 -04:00
Ethan Roseman
8ee2bf4522 UnkMoveNpc 2020-10-30 16:23:23 -04:00
Alex Bates
7fa97805b9
clean up get_song_variation_override_for_cur_map 2020-10-30 19:19:17 +00:00
Alex Bates
202fc247ad
format 2020-10-30 19:09:41 +00:00
Alex Bates
3206f6ffde
name code_341d0_len_20d0.c 2020-10-30 19:01:24 +00:00
Alex Bates
c1c0a98810
match area table
YOOOOOOOOOOOOOO
2020-10-30 18:58:59 +00:00
Alex Bates
0c2d448abb
match start of rodata_73DA0 2020-10-30 18:43:53 +00:00
Alex Bates
2a1c35a80c
lint 2020-10-30 17:50:58 +00:00
Alex Bates
8939f6da76
fix dma_copy 2020-10-30 17:45:38 +00:00
Ethan Roseman
97121d2c50 UnkCameraFunc 2020-10-30 13:43:45 -04:00
Alex Bates
3d9127a340
match world table .data 2020-10-30 17:43:12 +00:00
Alex Bates
debc0016fd
use ld_addrs.h in load_world_script_api
Renamed from load_map_script_lib
2020-10-30 16:07:33 +00:00
Ethan Roseman
a61be9ab77 rename 2020-10-30 00:43:23 -04:00
Ethan Roseman
0b04520f25 1 more 2020-10-30 00:32:25 -04:00
Ethan Roseman
83a5d82fbd GetPartnerCall800EB168 2020-10-30 00:15:44 -04:00
Ethan Roseman
da058dc095 GetGameStatus75 2020-10-30 00:07:11 -04:00
Ethan Roseman
3848319469 NotDoesScriptExist 2020-10-30 00:01:25 -04:00
Ethan Roseman
7717a96628 Call800EB168 2020-10-29 23:56:54 -04:00
Ethan Roseman
8dc783bf5b PartnerToggleAbilityScript 2020-10-29 23:47:20 -04:00
Ethan Roseman
3a53233b1d Unk800E98C4SyncStatusMenu 2020-10-29 23:37:25 -04:00
Ethan Roseman
19a34fe4bf GetNpcUnsafeOwner2 2020-10-29 22:49:54 -04:00
Ethan Roseman
bef10dd44e Call800E9894 2020-10-29 22:40:04 -04:00
Ethan Roseman
4a1f26c6ea Set80151310 2020-10-29 22:33:05 -04:00
Ethan Roseman
ba35048ab2 GetPlayerCoins 2020-10-29 22:20:45 -04:00
Ethan Roseman
f94c542a9d Set80151310_0 2020-10-29 22:15:51 -04:00
Alex Bates
0f4b4f8db0
add comment about .data 2020-10-30 00:01:11 +00:00
Alex Bates
cce065d529
badly match func_8014A498 2020-10-29 23:52:24 +00:00
Ethan Roseman
e8ba79a88c PR comment ;( 2020-10-29 19:27:23 -04:00
Ethan Roseman
9193d0a4ca PR comments 2020-10-29 19:23:22 -04:00
Alex Bates
484fba8d4d
name transition_music_volume_to 2020-10-29 22:44:10 +00:00
Alex Bates
db1ee14d8f
match get_song_variation_override_for_cur_map
This was previously called get_default_variation_for_song, but its more of an override than a default.
2020-10-29 22:41:43 +00:00
Alex Bates
c1df09dba8
match some cursed funcs + cleanup 2020-10-29 21:37:15 +00:00
Ethan Roseman
0fb1e1ab30 🐶 2020-10-29 16:58:34 -04:00
Ethan Roseman
d0d833cd1d LoadPath 2020-10-29 16:16:39 -04:00
Ethan Roseman
977fa7117d InterpPlayerYaw 2020-10-29 15:56:58 -04:00
Ethan Roseman
7376b736d0 a couple 2020-10-29 12:08:00 -04:00
Alex Bates
631afbe477
match many small funcs, rename symbols 2020-10-29 03:48:04 +00:00
Alex Bates
9c5338c04b
match func_8014AA54 2020-10-29 02:54:01 +00:00
Alex Bates
a2329fc84a
match func_8014A964, func_8014AC84 2020-10-29 02:17:11 +00:00
Alex Bates
d9d6595581
make set_music_track non-void
Still matches; its return value is used in SetMusicTrack
2020-10-29 01:38:51 +00:00
Alex Bates
322932c295
name set_music_track arg3 2020-10-29 01:36:53 +00:00
Alex Bates
1a6b1f5fcd
rename MusicPlayer unkFlags to flags 2020-10-29 01:35:05 +00:00
Alex Bates
e0c8108543
match _set_music_track 2020-10-29 01:34:00 +00:00
Alex Bates
9eef0b0273
match set_music_track
rewrite flag as NOT


clean up set_music_track temps
2020-10-29 01:34:00 +00:00
Alex Bates
85f7331004
match func_80055050 2020-10-29 00:29:30 +00:00
Ethan Roseman
8f3e3a85e4
Merge pull request #100 from ethteck/cornonthecob
100th PR Bonanza: Corn kernels and cornucopiae for all!
2020-10-28 17:03:00 -04:00
Ethan Roseman
b68eea5d66 cleanup 2 2020-10-28 16:00:45 -04:00
Ethan Roseman
5961098ef9 PR comments, match SetNpcPos 2020-10-28 15:52:09 -04:00
Ethan Roseman
6c5e959a75 cleanup 2020-10-28 15:11:05 -04:00
Ethan Roseman
9a10bd2677 start_script_in_group 2020-10-28 15:06:49 -04:00
Ethan Roseman
0e554072d1
Merge pull request #99 from ethteck/cornucopia
Cornucopia 4nucopia
2020-10-28 15:04:44 -04:00
Ethan Roseman
40d0eae53b Merge branch 'cornucopia' into cornonthecob 2020-10-28 13:52:35 -04:00
Ethan Roseman
ee17265064 PR comments 2020-10-28 13:34:02 -04:00
Ethan Roseman
90e7a9acab Assorted functions 2020-10-28 02:42:14 -04:00
Ethan Roseman
2ad6bb1677 PR comments 2020-10-27 23:15:10 -04:00
Ethan Roseman
2d215e6943 Some 1A5830 funcs 2020-10-26 23:31:40 -04:00
Ethan Roseman
eb41485a0a New C file split, many functions decompiled 2020-10-26 19:10:32 -04:00
Ethan Roseman
74ad0711fd
Merge pull request #98 from ethteck/cornucopia
Cornucopia 3D
2020-10-26 18:06:13 -04:00
Ethan Roseman
9494153160 PR comments 2020-10-26 17:45:24 -04:00
Ethan Roseman
099c159535 a few more map funcs 2020-10-25 22:37:22 -04:00
Ethan Roseman
c2d7449287 SetEntityPosition + co 2020-10-25 22:20:37 -04:00
Ethan Roseman
c4acc92579 GetEntityPosition 2020-10-25 21:44:43 -04:00
Ethan Roseman
e0ed375784 SetEntityFlags100000 2020-10-25 21:29:59 -04:00
Ethan Roseman
8a95d84a82 SyncStatusMenu and another 2020-10-25 21:23:02 -04:00
Ethan Roseman
97f1f96662 SomeItemEntityFunc 2020-10-25 21:12:01 -04:00
Ethan Roseman
37b94d320c UnkTexturePanFunc2 2020-10-25 16:08:59 -04:00
Ethan Roseman
763de9d951 UnkTexturePanFunc 2020-10-25 16:01:41 -04:00
Ethan Roseman
698c142dd4 GetCurrentCameraYawClamped180 2020-10-24 18:42:58 -04:00
Ethan Roseman
4c26b6df56 SetPlayerStatusAnimFlags100000 2020-10-24 18:32:02 -04:00
Ethan Roseman
86087faf8f GetCurrentFloor (less than 10k funcs now) 2020-10-24 18:25:25 -04:00
Ethan Roseman
820dd235e6 3 more 2020-10-24 18:14:57 -04:00
Ethan Roseman
4b1f9e0fa5 Some decomp, tons of cleanup 2020-10-24 17:51:27 -04:00
Ethan Roseman
4915acf7a2 si_find_label 2020-10-24 16:07:26 -04:00
Ethan Roseman
e8405620ba
Merge pull request #96 from ethteck/cornucopia
SI funcs and cleanup
2020-10-24 00:33:03 -04:00
Ethan Roseman
ef18c02a4a format 2020-10-24 00:25:25 -04:00
Ethan Roseman
3407ecb91a si funcs and cleanup 2020-10-24 00:23:16 -04:00
Ethan Roseman
6b8211bee1
Merge pull request #95 from nanaian/script-dsl
Add script DSL
2020-10-24 00:22:38 -04:00
Ethan Roseman
5d64708640 Map headers 2020-10-23 21:09:49 -04:00
Alex Bates
52f5d3cc49
improve build time 2020-10-23 21:06:06 +01:00
Alex Bates
f08eab499c
fix warnings 2020-10-23 20:17:35 +01:00
Alex Bates
d29496e6e0
add do..while psuedoinstruction 2020-10-23 19:35:45 +01:00
Alex Bates
652c52d3dd
use SCRIPT(...) everywhere 2020-10-23 18:39:38 +01:00
Ethan Roseman
98d8bdd789 map header WIP 2020-10-23 08:31:56 -04:00
Alex Bates
218961279b
merge make 2020-10-23 01:56:22 +01:00
Ethan Roseman
2462200b48 Merge branch 'master' into cornucopia 2020-10-22 17:16:58 -04:00
Alex Bates
0ea4d24deb
merge master 2020-10-22 17:34:31 +01:00
Alex Bates
83153acb59
implement SCRIPT(...) dsl 2020-10-22 05:54:03 +01:00
Ethan Roseman
2ea328286b Set8009A650_40 2020-10-21 22:27:59 -04:00
Alex Bates
14b509830f
#define map-namespaced functions with M 2020-10-22 03:14:13 +01:00
Ethan Roseman
32e896c011 SetManyVars 2020-10-21 22:05:01 -04:00
Ethan Roseman
7a7f24431f more cleanup 2020-10-21 21:53:26 -04:00
Ethan Roseman
69a29dc8fc removing extra lines / formatting 2020-10-21 21:43:08 -04:00
Ethan Roseman
5c049a9f22 SomeMatrixOperations bogo 2020-10-21 21:39:50 -04:00
dark-samus
49c7ba0239 add list types and fix code that uses them 2020-10-21 20:07:00 -04:00
Ethan Roseman
a659c1aeb4 big boy cleanup 2020-10-21 18:05:18 -04:00
Alex Bates
1dc8a3583d
declare M in map.h 2020-10-21 14:12:24 +01:00
Ethan Roseman
5bf7732a4e SomeXYZFuncTodoRename 2020-10-21 01:33:24 -04:00
Alex Bates
ccfe465f3b
NPC -> Npc 2020-10-21 04:07:38 +01:00
Alex Bates
48c132c2d2
more casing 2020-10-21 04:06:22 +01:00
Alex Bates
d6fdb87a56
NpcSettings casing 2020-10-21 03:59:27 +01:00
Ethan Roseman
773f9256c4 GetNpcCollisionHeight 2020-10-20 22:47:13 -04:00
Alex Bates
6474bf4704
add map namespace macro M(sym) 2020-10-21 03:37:42 +01:00
Ethan Roseman
59d30300f5 GetItemName 2020-10-20 20:59:17 -04:00
Ethan Roseman
2bbf2623e7 1 more 2020-10-20 19:31:45 -04:00
Ethan Roseman
69fd94e161 SetNpcB5_3 2020-10-20 19:02:05 -04:00
Ethan Roseman
6bfd58db59 Merge branch 'master' into cornucopia 2020-10-20 18:00:16 -04:00
Ethan Roseman
fe04af7b4c SpawnSunEffect 2020-10-20 17:43:20 -04:00
Ethan Roseman
89ae878f24 Merge branch 'master' into misc-improvements 2020-10-20 17:26:27 -04:00
Alex Bates
1e9843e549
remove _ prefix from filenames 2020-10-20 21:32:06 +01:00
Alex Bates
ca88a636e9
split maps further, clean asm 2020-10-20 20:47:10 +01:00
Alex Bates
ff7c3f333e
split all map files 2020-10-20 20:11:56 +01:00
alex
607dba0c58
Merge branch 'master' into misc-improvements 2020-10-20 18:51:56 +01:00
Ethan Roseman
dbd8e0b1ee Merge branch 'misc-improvements' into cornucopia 2020-10-20 12:44:50 -04:00
Ethan Roseman
b49ecebd99 PR comments 2020-10-20 10:22:51 -04:00
Alex Bates
8d89bbad3d
add @bug for read_west_sign return 2020-10-20 08:20:09 +01:00
Alex Bates
26f0cee254
comment goomba_npc movement 2020-10-20 08:14:07 +01:00
Alex Bates
056fbac32c
add FORMATION_ID macro 2020-10-20 07:49:40 +01:00
Alex Bates
8077a8f3cb
Script.uniqueID -> id 2020-10-20 07:40:15 +01:00
Alex Bates
ef7ddd6773
MapHeader -> MapConfig
It ain't a header if it ain't at the top of the data.
2020-10-20 07:36:05 +01:00
Alex Bates
99ac1cf053
update si types 2020-10-20 07:33:40 +01:00
Alex Bates
a9310efa85
add MessageID constants 2020-10-20 07:10:14 +01:00
Alex Bates
9d1715d198
kmr_12: use static where possible 2020-10-20 06:44:46 +01:00
Alex Bates
3b3b07c90a
kmr_12: use function pointers for unnamed api funcs 2020-10-20 06:14:50 +01:00
Alex Bates
9a60b9f311
add NPC_GROUP macro 2020-10-20 04:29:42 +01:00
Alex Bates
24ce2e9752
kmr_12: abstract structs/scripts further 2020-10-20 04:28:21 +01:00
Alex Bates
6c936a9126
kmr_12: uncomment string literals
It matches now I actually can't believe it
2020-10-20 04:18:00 +01:00
Alex Bates
23f8d8ee35
add structs/macros for matching map data 2020-10-20 04:11:07 +01:00
Ethan Roseman
dfd9de4765 Beginning SpawnSunEffect 2020-10-19 19:48:16 -04:00
Ethan Roseman
8e104e1147 AwaitPlayerNearNPC 2020-10-19 18:47:29 -04:00
Alex Bates
dd72dfcd1f
fix kmr_12 split 2020-10-19 23:22:18 +01:00
Alex Bates
f9a667bc7d
begin script disassembly 2020-10-19 22:58:57 +01:00
Ethan Roseman
8e47ca56c4
Map code (#80)
* split all map code

hype

* split area_table.bin properly

* fix coverage.py c_func_pattern to match multiline func signatures

* add src/world/* to makefile

* bump splat

* yikes

* splat maps without vram_lock

Co-authored-by: Alex Bates <hi@imalex.xyz>
2020-10-19 00:42:17 -04:00
sonicspiral
a82d662627
Decomp func_8013A854 from code_d0a70_len_4fe0 and add UnkStructFromfunc8013A854 (#78)
* inisital docs of asm logic and mips_to_c output

* add temp unknown struct for this func
* remove comments from asm, will keep them local only.

* moved UnkSructFromfunc8013A854 to common_sructs.h
* added it's pointer to undefined_syms
* fixed struct pointer and size
* this is a new struct, no others that are `0x7C` in size

* pulled upstream. testing more code.

* fix func_8013A854 to represent latest upstream

* remove unknown struct from common structs to this func

* this is a void func

* unknown struct should be an array with size based on mipstoc outpute a0 < 0x5A

* correct number of lines of asm output from diff, but all code does not match

* fix data types in UnkStructFromfunc8013A854

* temp_v0's logical shift needs to go after UnkStructFromfunc8013A854

* remove unneeded variables

* remove unneeded variables and adding inline sll multiple calc

* add UnkStructFromfunc8013A854 back to common structs

* add UnkStructFromfunc8013A854 back to common structs

* pull latest n64 splat

* analyzing func_8013AA9C to construct UnkStructFromfunc8013A854

* may need unions to represent sub structs in this unk

* roll back struct changes and focus on regalloc

* not an array of pointers looks like there's an array of 90 structs, each struct of size 0x7C

* got OK, now need to cleanup code

* Merge branch 'master' of https://github.com/ethteck/papermario into code_d0a70_len_4fe0-func_8013A854

# Conflicts:
#	tools/n64splat

* fix comment

* remove func_8013AA9C comment used during debug

* add placeholders unks in UnkStructFromfunc8013A854 based on func_8013AA9C

* add first 6 unks in D_80156954

* update todo, add some padding

* adding padding

* adjusting padding

* finished first implementation of padding for UnkStructFromfunc8013A854

* run ./coverage.py --delete-matched

* git checkout -f master && git pull for tools/star-rod

* several changes to UnkStruct8013A854:
* change name from UnkStructFromfunc8013A854 to UnkStruct8013A854
* only include known member data
* add list typedef since this is any arracy of structs

* fix UNKSTRUCT8013A854_SIZE const

* fix スプラトゥーン n64splat

* implement UnkStruct8013A854List to track which array we are pointing to in this unknown struct

* resolve PR feedback. todo resolve splat, review alex optimization:
* move unkstruct extern, struct, and size to code_d0a70_len_4fe0.c
* format void func_8013A854 variable spacing
* add unknown symbol D_80156954;0x80156954 to tools/symbol_addrs.txt

* try fix スプラトn64 with git checkout master && git pull

* fix lint

* move var declaration to inside if and format code

* remove todo comment

Co-authored-by: sonicspiral <>
Co-authored-by: sonicspiral <mru@plusultra.localdomain>
2020-10-19 00:15:04 -04:00
Ethan Roseman
4dce4c2839 misc 2020-10-18 22:55:52 -04:00
Ethan Roseman
0e132ce687 si_handle_bind_🔒 2020-10-18 21:20:07 -04:00
Ethan Roseman
78dc55f2f5 some of world_goompa 2020-10-18 20:24:43 -04:00
Ethan Roseman
b71a05cd97 world_goombaria 2020-10-18 20:04:18 -04:00
Ethan Roseman
37856b1b54 2020-10-18 19:27:14 -04:00
Ethan Roseman
fa589f28f1 more 🐟 2020-10-18 18:16:42 -04:00
Ethan Roseman
a15a282a08 Thy cornucopia hath return! 2020-10-18 17:04:40 -04:00
Ethan Roseman
55e4a0df8f Nusys 1.0 -> 2.05, Makefile cleanup 2020-10-17 23:48:26 -04:00
Ethan Roseman
16a9ee0a7b Merge branch 'master' into new_splits 2020-10-17 22:41:09 -04:00
Ethan Roseman
a8e550dd9a yee 2020-10-17 22:27:25 -04:00
Ethan Roseman
3e412377d9 si.c 2020-10-17 21:05:17 -04:00
Ethan Roseman
c8b796595d . 2020-10-17 18:05:39 -04:00
Ethan Roseman
ebdc55d8b1 renaming func 2020-10-17 17:49:33 -04:00
Alex Bates
bbeef1ff98
near-match ActorSpeak
just regalloc issues
2020-10-17 21:21:57 +01:00
Ethan Roseman
890fd346e9 🌠 2020-10-16 23:47:10 -04:00
Ethan Roseman
36f2fc2f86 clover we miss you 2020-10-16 22:36:28 -04:00
Ethan Roseman
9866661518 Merge branch 'better-cornucopia' into cornucopia 2020-10-16 21:00:37 -04:00
Ethan Roseman
f67477a9eb meowp 2020-10-16 20:59:49 -04:00
Ethan Roseman
67b516d3d2 :arrow: 2020-10-16 18:23:52 -04:00
Ethan Roseman
e1b4b8b594 🐱 2020-10-16 16:29:55 -04:00
Alex Bates
57d69d1e72
match add_actor_decoration, near-match others 2020-10-16 21:29:54 +01:00
Alex Bates
46586ba9ba
match actor/part decoration funcs 2020-10-16 20:07:41 +01:00
Ethan Roseman
9e9ce5bb29 👀 2020-10-16 14:49:18 -04:00
Alex Bates
c1fabdfad9
match and name create_part_shadow_by_ptr 2020-10-16 18:15:51 +01:00
Alex Bates
ddbb46112d
match create_part_shadow and heroes_is_ability_active 2020-10-16 17:59:36 +01:00
Ethan Roseman
369cb32bbc hey rain 2020-10-16 02:09:20 -04:00
Ethan Roseman
1040a9124c hey clover lol wudup 2020-10-15 23:07:50 -04:00
Ethan Roseman
5bc8e56a91 treats 2020-10-15 22:05:04 -04:00
Ethan Roseman
3fcceae5be format 2020-10-15 18:44:42 -04:00
Ethan Roseman
67719a662f Cleanup 2020-10-15 18:26:59 -04:00
Ethan Roseman
f45c24f7c8 Some shtuff 2020-10-15 18:11:56 -04:00
Ethan Roseman
a285afc756 Use all symbols in symbol_addrs.txt 2020-10-15 00:43:07 -04:00