Skip to content

Commit

Permalink
Develop/2.1.0 (#2)
Browse files Browse the repository at this point in the history
* Deprecate sBackgroundMusicDefaultVolume

* Add MAX_SIMULTANEOUS_NOTES defines and better document audio allocations for audio heap (looks kinda awful still)

* Some formatting changes :( (But also some safeguards and updated documentation)

* Pointless memory allocation

* Audio safeguard error

* Bugfix: the smaller MAX_SIMULTANEOUS_NOTES define, when used, can lead to silence on audio init

* Bugfixes, sound bank heap defines, BETTER_REVERB improvements

* Whoops

* sAudioFirstBoot renamed to sAudioIsInitialized

* Added no cap music restarts define (HackerN64#335)

* Add missing syncs for G_PM_NPRIMITIVE (HackerN64#345)

* Fixed eeprom saving on VC (HackerN64#334)

* Fixed eeprom saving on VC

* Specify SM for EEP4K, for any other savetype use ED

* Moved IS_VC() check to an earlier point, switch IS_VC()->gIsVC

* Moved binary VC files to bin folder, added checks for EEP

* Do not keep vc_bin if EEP is not set

* Added buttonReleased member in the controller struct (HackerN64#421)

* Bugfix, refactor, and slightly improve BETTER_REVERB runtime (HackerN64#391)

* Buxfix, refactor, and slightly improve BETTER_REVERB runtime

* Update BETTER_REVERB defaults and add some more customizability

* Improve BETTER_REVERB runtime even further

* Rename some reverb variables to make more sense in context

* Suppress a gcc10 compiler warning for uninitialized variable

* Adjust the static surface pool's size automatically per level and add static object collision (HackerN64#444)

* Fixed function addresses being incorrect in crash screen stacktrace (HackerN64#333)

* Clear only used dynamic cells (HackerN64#451)

Clear only used dynamic cells

* Fixed memory leak between areas from automatic surface pool size (HackerN64#452)

* fixed mem leak

* Add comment to second pop

* Mat Stack Fix

* Implemented new lightweight CPU/RDP profiler
* Added RSP profiling to the lightweight profiler
* Added CPU audio to lightweight profiler
* Changed lingering manual light struct definitions to gdSPDefLights1, made a dummy light for Koopa's pink shorts
* Ran script to convert all light commands to lightcolor commands
* Added define guards for the profiler
* Wrote function for setting up global light direction in the frame
* Moved camera matrix into projection stack
* Corrected cameraToObject for the new matrix stack (fixes culling and sound)
* Fixed billboarding with new matrix stack
* Fixed shadows with new matrix stack
* Fixed some areas where the game was previously extracting the camera matrix from various matrices
* Restored vanilla light and env map directions under new matrix stack
* Fix goddard crash
* Fix geo_process_level_of_detail
* Remove 'construct_float' from 'geo_process_level_of_detail'
* Removed some accidentally added files
* Removed unnecessary matrix multiplications in geo_process_object
* Added fixlights script to build system for fixing custom assets and added option to disable it if needed
* Fixed visual debug with new matstack and cleaned up visual debug code
* Fixed handling of WORLD_SCALE in view matrix so it doesn't get cancelled out
* Fixed clip planes not scaling based on WORLD_SCALE

Co-authored-by: Mr-Wiseguy <[email protected]>
Co-authored-by: Arceveti <[email protected]>
Co-authored-by: thecozies <[email protected]>

* moved CASTLE_MUSIC_FIX into level specific checks (HackerN64#437)

* Clean up gotos from find_wall_collisions_from_list (HackerN64#288)

* Replace unused 0C bank with aglab's / scut's extended 0C bank  (HackerN64#412)

* Delete config_interaction.h (HackerN64#440)

* Line endings for all text files now forced to \n instead of \r\n (HackerN64#464)

* Reformat config comments (HackerN64#470)

* fix level mesh not updating (HackerN64#477)

Co-authored-by: gheskett <[email protected]>
Co-authored-by: Denis Kopyrin <[email protected]>
Co-authored-by: Fazana <[email protected]>
Co-authored-by: axollyon <[email protected]>
Co-authored-by: Mr-Wiseguy <[email protected]>
Co-authored-by: Arceveti <[email protected]>
Co-authored-by: Reonu <[email protected]>
Co-authored-by: arthurtilly <[email protected]>
Co-authored-by: thecozies <[email protected]>
Co-authored-by: thecozies <[email protected]>
Co-authored-by: Arceveti <[email protected]>
Co-authored-by: Tubular Bells <[email protected]>
  • Loading branch information
13 people authored Aug 22, 2022
1 parent dc5019e commit 0092e07
Show file tree
Hide file tree
Showing 512 changed files with 5,189 additions and 8,400 deletions.
26 changes: 13 additions & 13 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
* text=auto

# List text files in case git doesn't characterize correctly
*.c text
*.h text
*.s text
*.in text
*.js text
*.md text
*.py text
*.sh text
*.ld text
*.inc text
*.txt text
*.json text
*.yaml text
*.c text eol=lf
*.h text eol=lf
*.s text eol=lf
*.in text eol=lf
*.js text eol=lf
*.md text eol=lf
*.py text eol=lf
*.sh text eol=lf
*.ld text eol=lf
*.inc text eol=lf
*.txt text eol=lf
*.json text eol=lf
*.yaml text eol=lf

# Same for binary
*.bin binary
Expand Down
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ else ifeq ($(VERSION),sh)
DEFINES += VERSION_SH=1
endif

# FIXLIGHTS - converts light objects to light color commands for assets, needed for vanilla-style lighting
FIXLIGHTS ?= 1

DEBUG_MAP_STACKTRACE_FLAG := -D DEBUG_MAP_STACKTRACE

TARGET := sm64
Expand Down Expand Up @@ -222,7 +225,7 @@ TARGET_STRING := sm64

# UNF - whether to use UNFLoader flashcart library
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
UNF ?= 0
$(eval $(call validate-option,UNF,0 1))
ifeq ($(UNF),1)
Expand All @@ -234,7 +237,7 @@ endif
# ISVPRINT - whether to fake IS-Viewer presence,
# allowing for usage of CEN64 (and possibly Project64) to print messages to terminal.
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
ISVPRINT ?= 0
$(eval $(call validate-option,ISVPRINT,0 1))
ifeq ($(ISVPRINT),1)
Expand All @@ -252,7 +255,7 @@ endif

# HVQM - whether to use HVQM fmv library
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
HVQM ?= 0
$(eval $(call validate-option,HVQM,0 1))
ifeq ($(HVQM),1)
Expand Down Expand Up @@ -287,7 +290,7 @@ $(eval $(call validate-option,GZIPVER,std libdef))

# GODDARD - whether to use libgoddard (Mario Head)
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
GODDARD ?= 0
$(eval $(call validate-option,GODDARD,0 1))
ifeq ($(GODDARD),1)
Expand Down Expand Up @@ -423,8 +426,6 @@ DEP_FILES := $(O_FILES:.o=.d) $(LIBZ_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(B
# detect prefix for MIPS toolchain
ifneq ($(call find-command,mips64-elf-ld),)
CROSS := mips64-elf-
else ifneq ($(call find-command,mips-n64-ld),)
CROSS := mips-n64-
else ifneq ($(call find-command,mips64-ld),)
CROSS := mips64-
else ifneq ($(call find-command,mips-linux-gnu-ld),)
Expand Down Expand Up @@ -513,6 +514,7 @@ AIFF_EXTRACT_CODEBOOK := $(TOOLS_DIR)/aiff_extract_codebook
VADPCM_ENC := $(TOOLS_DIR)/vadpcm_enc
EXTRACT_DATA_FOR_MIO := $(TOOLS_DIR)/extract_data_for_mio
SKYCONV := $(TOOLS_DIR)/skyconv
FIXLIGHTS_PY := $(TOOLS_DIR)/fixlights.py
ifeq ($(GZIPVER),std)
GZIP := gzip
else
Expand Down Expand Up @@ -814,6 +816,11 @@ $(BUILD_DIR)/src/game/version_data.h: tools/make_version.sh
#==============================================================================#

# Compile C code
ifeq ($(FIXLIGHTS),1)
# This must not be run multiple times at once, so we run it ahead of time rather than in a rule
DUMMY != $(FIXLIGHTS_PY) actors
DUMMY != $(FIXLIGHTS_PY) levels
endif
$(BUILD_DIR)/%.o: %.c
$(call print,Compiling:,$<,$@)
$(V)$(CC) -c $(CFLAGS) -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
Expand Down
44 changes: 16 additions & 28 deletions actors/bird/model.inc.c
Original file line number Diff line number Diff line change
@@ -1,22 +1,10 @@
// Birds

// 0x05000000
static const Lights1 birds_seg5_lights_05000000 = gdSPDefLights1(
0x07, 0x24, 0x2c,
0x1d, 0x91, 0xb0, 0x28, 0x28, 0x28
);

// 0x05000018
static const Lights1 birds_seg5_lights_05000018 = gdSPDefLights1(
0x33, 0x27, 0x0d,
0xce, 0x9d, 0x34, 0x28, 0x28, 0x28
);

// 0x05000030
static const Lights1 birds_seg5_lights_05000030 = gdSPDefLights1(
0x3f, 0x3f, 0x3f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);

// 0x05000048
static const Vtx birds_seg5_vertex_05000048[] = {
Expand Down Expand Up @@ -138,8 +126,8 @@ static const Vtx birds_seg5_vertex_050004C8[] = {

// 0x05000528 - 0x05000598
const Gfx birds_seg5_dl_05000528[] = {
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_05000048, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 5, 3, 6, 0x0),
Expand All @@ -151,25 +139,25 @@ const Gfx birds_seg5_dl_05000528[] = {

// 0x05000598 - 0x05000600
const Gfx birds_seg5_dl_05000598[] = {
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_050000D8, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_05000108, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_05000138, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
};

// 0x05000600 - 0x05000670
const Gfx birds_seg5_dl_05000600[] = {
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_05000168, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 5, 3, 6, 0x0),
Expand All @@ -181,8 +169,8 @@ const Gfx birds_seg5_dl_05000600[] = {

// 0x05000670 - 0x050007E0
const Gfx birds_seg5_dl_05000670[] = {
gsSPLight(&birds_seg5_lights_05000000.l, 1),
gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPLightColor(LIGHT_1, 0x1d91b0ff),
gsSPLightColor(LIGHT_2, 0x7242cff),
gsSPVertex(birds_seg5_vertex_050001F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 1, 9, 10, 0x0),
Expand All @@ -198,16 +186,16 @@ const Gfx birds_seg5_dl_05000670[] = {
gsSP1Triangle( 7, 6, 15, 0x0),
gsSPVertex(birds_seg5_vertex_050003F8, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPLight(&birds_seg5_lights_05000030.l, 1),
gsSPLight(&birds_seg5_lights_05000030.a, 2),
gsSPLightColor(LIGHT_1, 0xffffffff),
gsSPLightColor(LIGHT_2, 0x3f3f3fff),
gsSPVertex(birds_seg5_vertex_05000428, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 0, 7, 0x0, 7, 8, 6, 0x0),
gsSP2Triangles( 9, 7, 2, 0x0, 2, 7, 0, 0x0),
gsSP2Triangles( 2, 3, 9, 0x0, 7, 9, 8, 0x0),
gsSP1Triangle( 5, 4, 1, 0x0),
gsSPLight(&birds_seg5_lights_05000018.l, 1),
gsSPLight(&birds_seg5_lights_05000018.a, 2),
gsSPLightColor(LIGHT_1, 0xce9d34ff),
gsSPLightColor(LIGHT_2, 0x33270dff),
gsSPVertex(birds_seg5_vertex_050004C8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP1Triangle( 1, 3, 5, 0x0),
Expand Down
40 changes: 10 additions & 30 deletions actors/blargg/model.inc.c
Original file line number Diff line number Diff line change
@@ -1,34 +1,14 @@
// Blargg (Unused)

// Unreferenced light group
UNUSED static const Lights1 blargg_lights_unused = gdSPDefLights1(
0x3f, 0x3f, 0x3f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);

// 0x05004740
static const Lights1 blargg_seg5_lights_05004740 = gdSPDefLights1(
0x3f, 0x0d, 0x05,
0xff, 0x36, 0x16, 0x28, 0x28, 0x28
);

// 0x05004758
static const Lights1 blargg_seg5_lights_05004758 = gdSPDefLights1(
0x2c, 0x2c, 0x2c,
0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
);

// 0x05004770
static const Lights1 blargg_seg5_lights_05004770 = gdSPDefLights1(
0x3f, 0x0a, 0x06,
0xff, 0x2a, 0x1a, 0x28, 0x28, 0x28
);

// 0x05004788
static const Lights1 blargg_seg5_lights_05004788 = gdSPDefLights1(
0x3f, 0x0b, 0x07,
0xff, 0x2e, 0x1f, 0x28, 0x28, 0x28
);

// 0x050047A0
static const Vtx blargg_seg5_vertex_050047A0[] = {
Expand Down Expand Up @@ -383,8 +363,8 @@ static const Vtx blargg_seg5_vertex_050057E0[] = {

// 0x050058D0 - 0x05005A60
const Gfx blargg_seg5_dl_050058D0[] = {
gsSPLight(&blargg_seg5_lights_05004758.l, 1),
gsSPLight(&blargg_seg5_lights_05004758.a, 2),
gsSPLightColor(LIGHT_1, 0xb2b2b2ff),
gsSPLightColor(LIGHT_2, 0x2c2c2cff),
gsSPVertex(blargg_seg5_vertex_050047A0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
Expand All @@ -398,8 +378,8 @@ const Gfx blargg_seg5_dl_050058D0[] = {
gsSPVertex(blargg_seg5_vertex_050049A0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSPLight(&blargg_seg5_lights_05004740.l, 1),
gsSPLight(&blargg_seg5_lights_05004740.a, 2),
gsSPLightColor(LIGHT_1, 0xff3616ff),
gsSPLightColor(LIGHT_2, 0x3f0d05ff),
gsSPVertex(blargg_seg5_vertex_05004A20, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
Expand All @@ -418,8 +398,8 @@ const Gfx blargg_seg5_dl_050058D0[] = {

// 0x05005A60 - 0x05005D00
const Gfx blargg_seg5_dl_05005A60[] = {
gsSPLight(&blargg_seg5_lights_05004758.l, 1),
gsSPLight(&blargg_seg5_lights_05004758.a, 2),
gsSPLightColor(LIGHT_1, 0xb2b2b2ff),
gsSPLightColor(LIGHT_2, 0x2c2c2cff),
gsSPVertex(blargg_seg5_vertex_05004BE0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
Expand All @@ -433,8 +413,8 @@ const Gfx blargg_seg5_dl_05005A60[] = {
gsSPVertex(blargg_seg5_vertex_05004DE0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSPLight(&blargg_seg5_lights_05004770.l, 1),
gsSPLight(&blargg_seg5_lights_05004770.a, 2),
gsSPLightColor(LIGHT_1, 0xff2a1aff),
gsSPLightColor(LIGHT_2, 0x3f0a06ff),
gsSPVertex(blargg_seg5_vertex_05004E60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 2, 6, 7, 0x0, 2, 7, 8, 0x0),
Expand Down Expand Up @@ -472,8 +452,8 @@ const Gfx blargg_seg5_dl_05005A60[] = {

// 0x05005D00 - 0x05005EB8
const Gfx blargg_seg5_dl_05005D00[] = {
gsSPLight(&blargg_seg5_lights_05004788.l, 1),
gsSPLight(&blargg_seg5_lights_05004788.a, 2),
gsSPLightColor(LIGHT_1, 0xff2e1fff),
gsSPLightColor(LIGHT_2, 0x3f0b07ff),
gsSPVertex(blargg_seg5_vertex_050053E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
Expand Down
8 changes: 2 additions & 6 deletions actors/blue_coin_switch/model.inc.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
// Blue Coin Switch

// 0x08000000
static const Lights1 blue_coin_switch_seg8_lights_08000000 = gdSPDefLights1(
0x7f, 0x7f, 0x7f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);

// 0x08000018
ALIGNED8 static const Texture blue_coin_switch_seg8_texture_08000018[] = {
Expand Down Expand Up @@ -49,8 +45,8 @@ const Gfx blue_coin_switch_seg8_dl_08000D58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_coin_switch_seg8_texture_08000018),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPLight(&blue_coin_switch_seg8_lights_08000000.l, 1),
gsSPLight(&blue_coin_switch_seg8_lights_08000000.a, 2),
gsSPLightColor(LIGHT_1, 0xffffffff),
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
gsSPVertex(blue_coin_switch_seg8_vertex_08000C18, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
Expand Down
12 changes: 4 additions & 8 deletions actors/blue_fish/model.inc.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
// Blue Fish

// 0x0301B5C8
static const Lights1 blue_fish_seg3_lights_0301B5C8 = gdSPDefLights1(
0x3f, 0x3f, 0x3f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);

// 0x0301B5E0
ALIGNED8 static const Texture blue_fish_seg3_texture_0301B5E0[] = {
Expand Down Expand Up @@ -34,8 +30,8 @@ const Gfx blue_fish_seg3_dl_0301BEC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),
gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),
gsSPLightColor(LIGHT_1, 0xffffffff),
gsSPLightColor(LIGHT_2, 0x3f3f3fff),
gsSPVertex(blue_fish_seg3_vertex_0301BDE0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 5, 0, 3, 0x0, 2, 6, 0, 0x0),
Expand Down Expand Up @@ -86,8 +82,8 @@ const Gfx blue_fish_seg3_dl_0301C0A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),
gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),
gsSPLightColor(LIGHT_1, 0xffffffff),
gsSPLightColor(LIGHT_2, 0x3f3f3fff),
gsSPVertex(blue_fish_seg3_vertex_0301C018, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 4, 5, 2, 0x0, 2, 5, 6, 0x0),
Expand Down
Loading

0 comments on commit 0092e07

Please sign in to comment.