examples: Remove global variables from some examples

This commit is contained in:
Antonio Niño Díaz 2024-03-08 02:42:08 +00:00
parent a06617a93f
commit 9f81541075
3 changed files with 73 additions and 63 deletions

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: CC0-1.0
//
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022, 2024
//
// This file is part of Nitro Engine
@ -18,11 +18,15 @@
#include "s64.h"
#include "s256.h"
NE_Material *Material_s8, *Material_s16, *Material_s64, *Material_s256;
NE_Palette *Palette_s8, *Palette_s16, *Palette_s64, *Palette_s256;
typedef struct {
NE_Material *Material_s8, *Material_s16, *Material_s64, *Material_s256;
NE_Palette *Palette_s8, *Palette_s16, *Palette_s64, *Palette_s256;
} SceneData;
void Draw3DScene(void)
void Draw3DScene(void *arg)
{
SceneData *Scene = arg;
NE_ClearColorSet(NE_DarkGray, 31, 63);
NE_2DViewInit();
@ -30,27 +34,29 @@ void Draw3DScene(void)
// Texture scaled from 64x64 to 128x128
NE_2DDrawTexturedQuad(10, 10,
10 + 128, 10 + 128,
2, Material_s64);
2, Scene->Material_s64);
// Texture scaled from 8x8 to 32x32
NE_2DDrawTexturedQuad(150, 10,
150 + 32, 10 + 32,
0, Material_s8);
0, Scene->Material_s8);
// Texture not scaled
NE_2DDrawTexturedQuad(160, 50,
160 + 64, 50 + 64,
10, Material_s64);
10, Scene->Material_s64);
// Texture scaled from 16x16 to 64x64
NE_2DDrawTexturedQuad(150, 120,
150 + 64, 120 + 64,
1, Material_s16);
1, Scene->Material_s16);
}
void Draw3DScene2(void)
void Draw3DScene2(void *arg)
{
SceneData *Scene = arg;
NE_ClearColorSet(NE_Magenta, 31, 63);
NE_2DViewInit();
@ -58,55 +64,57 @@ void Draw3DScene2(void)
// Texture not scaled
NE_2DDrawTexturedQuad(-10, -70,
-10 + 256, -70 + 256,
3, Material_s256);
3, Scene->Material_s256);
}
int main(void)
{
SceneData Scene = { 0 };
irqEnable(IRQ_HBLANK);
irqSet(IRQ_VBLANK, NE_VBLFunc);
irqSet(IRQ_HBLANK, NE_HBLFunc);
NE_InitDual3D();
Material_s8 = NE_MaterialCreate();
Material_s16 = NE_MaterialCreate();
Material_s64 = NE_MaterialCreate();
Material_s256 = NE_MaterialCreate();
Scene.Material_s8 = NE_MaterialCreate();
Scene.Material_s16 = NE_MaterialCreate();
Scene.Material_s64 = NE_MaterialCreate();
Scene.Material_s256 = NE_MaterialCreate();
Palette_s8 = NE_PaletteCreate();
Palette_s16 = NE_PaletteCreate();
Palette_s64 = NE_PaletteCreate();
Palette_s256 = NE_PaletteCreate();
Scene.Palette_s8 = NE_PaletteCreate();
Scene.Palette_s16 = NE_PaletteCreate();
Scene.Palette_s64 = NE_PaletteCreate();
Scene.Palette_s256 = NE_PaletteCreate();
NE_MaterialTexLoad(Material_s8, NE_PAL16, 8, 8,
NE_MaterialTexLoad(Scene.Material_s8, NE_PAL16, 8, 8,
NE_TEXGEN_TEXCOORD | NE_TEXTURE_WRAP_S | NE_TEXTURE_WRAP_T,
s8Bitmap);
NE_MaterialTexLoad(Material_s16, NE_PAL16, 16, 16,
NE_MaterialTexLoad(Scene.Material_s16, NE_PAL16, 16, 16,
NE_TEXGEN_TEXCOORD | NE_TEXTURE_WRAP_S | NE_TEXTURE_WRAP_T,
s16Bitmap);
NE_MaterialTexLoad(Material_s64, NE_PAL16, 64, 64,
NE_MaterialTexLoad(Scene.Material_s64, NE_PAL16, 64, 64,
NE_TEXGEN_TEXCOORD | NE_TEXTURE_WRAP_S | NE_TEXTURE_WRAP_T,
s64Bitmap);
NE_MaterialTexLoad(Material_s256, NE_PAL16, 256, 256,
NE_MaterialTexLoad(Scene.Material_s256, NE_PAL16, 256, 256,
NE_TEXGEN_TEXCOORD | NE_TEXTURE_WRAP_S | NE_TEXTURE_WRAP_T,
s256Bitmap);
NE_PaletteLoad(Palette_s8, s8Pal, 16, NE_PAL16);
NE_PaletteLoad(Palette_s16, s16Pal, 16, NE_PAL16);
NE_PaletteLoad(Palette_s64, s64Pal, 16, NE_PAL16);
NE_PaletteLoad(Palette_s256, s256Pal, 16, NE_PAL16);
NE_PaletteLoad(Scene.Palette_s8, s8Pal, 16, NE_PAL16);
NE_PaletteLoad(Scene.Palette_s16, s16Pal, 16, NE_PAL16);
NE_PaletteLoad(Scene.Palette_s64, s64Pal, 16, NE_PAL16);
NE_PaletteLoad(Scene.Palette_s256, s256Pal, 16, NE_PAL16);
NE_MaterialSetPalette(Material_s8, Palette_s8);
NE_MaterialSetPalette(Material_s16, Palette_s16);
NE_MaterialSetPalette(Material_s64, Palette_s64);
NE_MaterialSetPalette(Material_s256, Palette_s256);
NE_MaterialSetPalette(Scene.Material_s8, Scene.Palette_s8);
NE_MaterialSetPalette(Scene.Material_s16, Scene.Palette_s16);
NE_MaterialSetPalette(Scene.Material_s64, Scene.Palette_s64);
NE_MaterialSetPalette(Scene.Material_s256, Scene.Palette_s256);
while (1)
{
NE_WaitForVBL(0);
NE_ProcessDual(Draw3DScene, Draw3DScene2);
NE_ProcessDualArg(Draw3DScene, Draw3DScene2, &Scene, &Scene);
}
return 0;

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: CC0-1.0
//
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022, 2024
//
// This file is part of Nitro Engine
@ -8,10 +8,6 @@
#include "icon.h"
NE_Material *Material;
NE_Palette *Palette;
NE_Sprite *Sprite[4];
void Draw3DScene(void)
{
NE_2DViewInit();
@ -27,8 +23,8 @@ int main(void)
NE_Init3D();
NE_SwapScreens();
Material = NE_MaterialCreate();
Palette = NE_PaletteCreate();
NE_Material *Material = NE_MaterialCreate();
NE_Palette *Palette = NE_PaletteCreate();
NE_MaterialTexLoad(Material, NE_PAL16, 128, 128, NE_TEXGEN_TEXCOORD,
iconBitmap);
@ -38,6 +34,7 @@ int main(void)
NE_ClearColorSet(NE_Gray, 31, 63);
NE_Sprite *Sprite[4];
Sprite[0] = NE_SpriteCreate();
Sprite[1] = NE_SpriteCreate();
Sprite[2] = NE_SpriteCreate();

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: CC0-1.0
//
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022
// SPDX-FileContributor: Antonio Niño Díaz, 2008-2011, 2019, 2022, 2024
//
// This file is part of Nitro Engine
@ -9,26 +9,31 @@
#include "texture.h"
#include "sphere_bin.h"
NE_Camera *Camera;
NE_Model *Model, *Model2, *Model3;
NE_Material *Material;
typedef struct {
NE_Camera *Camera;
NE_Model *Model, *Model2, *Model3;
} SceneData;
void Draw3DScene(void)
void Draw3DScene(void *arg)
{
SceneData *Scene = arg;
// Set camera
NE_CameraUse(Camera);
NE_CameraUse(Scene->Camera);
// This has to be used to use fog
NE_PolyFormat(31, 0, NE_LIGHT_ALL, NE_CULL_BACK, NE_FOG_ENABLE);
// Draw models
NE_ModelDraw(Model);
NE_ModelDraw(Model2);
NE_ModelDraw(Model3);
NE_ModelDraw(Scene->Model);
NE_ModelDraw(Scene->Model2);
NE_ModelDraw(Scene->Model3);
}
int main(void)
{
SceneData Scene = { 0 };
irqEnable(IRQ_HBLANK);
irqSet(IRQ_VBLANK, NE_VBLFunc);
irqSet(IRQ_VBLANK, NE_HBLFunc);
@ -41,39 +46,39 @@ int main(void)
consoleDemoInit();
// Allocate objects
Model = NE_ModelCreate(NE_Static);
Model2 = NE_ModelCreate(NE_Static);
Model3 = NE_ModelCreate(NE_Static);
Camera = NE_CameraCreate();
Material = NE_MaterialCreate();
Scene.Model = NE_ModelCreate(NE_Static);
Scene.Model2 = NE_ModelCreate(NE_Static);
Scene.Model3 = NE_ModelCreate(NE_Static);
Scene.Camera = NE_CameraCreate();
NE_Material *Material = NE_MaterialCreate();
// Set camera coordinates
NE_CameraSet(Camera,
NE_CameraSet(Scene.Camera,
-1, 2, -1,
1, 1, 1,
0, 1, 0);
// Load models
NE_ModelLoadStaticMesh(Model, sphere_bin);
NE_ModelLoadStaticMesh(Model2, sphere_bin);
NE_ModelLoadStaticMesh(Model3, sphere_bin);
NE_ModelLoadStaticMesh(Scene.Model, sphere_bin);
NE_ModelLoadStaticMesh(Scene.Model2, sphere_bin);
NE_ModelLoadStaticMesh(Scene.Model3, sphere_bin);
// Load texture
NE_MaterialTexLoad(Material, NE_RGB5, 256, 256, NE_TEXGEN_TEXCOORD,
textureBitmap);
// Assign the same material to every model object.
NE_ModelSetMaterial(Model, Material);
NE_ModelSetMaterial(Model2, Material);
NE_ModelSetMaterial(Model3, Material);
NE_ModelSetMaterial(Scene.Model, Material);
NE_ModelSetMaterial(Scene.Model2, Material);
NE_ModelSetMaterial(Scene.Model3, Material);
// Set light and vector of light 0
NE_LightSet(0, NE_White, 0, -1, -1);
// Set position of every object
NE_ModelSetCoord(Model, 1, 0, 1);
NE_ModelSetCoord(Model2, 3, 1, 3);
NE_ModelSetCoord(Model3, 7, 2, 7);
NE_ModelSetCoord(Scene.Model, 1, 0, 1);
NE_ModelSetCoord(Scene.Model2, 3, 1, 3);
NE_ModelSetCoord(Scene.Model3, 7, 2, 7);
// Set initial fog color to black
u32 color = NE_Black;
@ -125,7 +130,7 @@ int main(void)
shift, mass, depth);
// Draw scene
NE_Process(Draw3DScene);
NE_ProcessArg(Draw3DScene, &Scene);
}
return 0;