Draw sky
This commit is contained in:
parent
13a4c0d807
commit
d7194d9183
2 changed files with 31 additions and 36 deletions
60
game.h
60
game.h
|
@ -118,21 +118,21 @@ void LCR_gameEnd(void)
|
||||||
|
|
||||||
void LCR_drawSkyStrip(int verticalOffset, uint8_t horizontalOffset)
|
void LCR_drawSkyStrip(int verticalOffset, uint8_t horizontalOffset)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if LCR_SETTING_SKY_SIZE != 0
|
#if LCR_SETTING_SKY_SIZE != 0
|
||||||
|
|
||||||
verticalOffset -= (LCR_SETTING_SKY_SIZE * LCR_SKY_IMAGE_SIZE) / 2;
|
verticalOffset -= (LCR_SETTING_SKY_SIZE * LCR_SKY_IMAGE_SIZE) / 2;
|
||||||
|
|
||||||
int finalY = verticalOffset + LCR_SETTING_SKY_SIZE * LCR_SKY_IMAGE_SIZE;
|
int finalY = verticalOffset + LCR_SETTING_SKY_SIZE * LCR_SKY_IMAGE_SIZE;
|
||||||
|
|
||||||
|
finalY = (finalY / LCR_SETTING_SKY_SIZE) * LCR_SETTING_SKY_SIZE;
|
||||||
|
|
||||||
if (finalY >= LCR_EFFECTIVE_RESOLUTION_Y)
|
if (finalY >= LCR_EFFECTIVE_RESOLUTION_Y)
|
||||||
finalY = LCR_EFFECTIVE_RESOLUTION_Y - 1;
|
finalY = LCR_EFFECTIVE_RESOLUTION_Y - 1;
|
||||||
|
|
||||||
unsigned int skyY = 0;
|
const uint16_t *skyLine = LCR_skyImages + 256;
|
||||||
|
|
||||||
if (verticalOffset < 0)
|
if (verticalOffset < 0)
|
||||||
{
|
{
|
||||||
skyY = -1 * verticalOffset;
|
skyLine += (-1 * verticalOffset / LCR_SETTING_SKY_SIZE) * (LCR_SKY_IMAGE_SIZE / 2);
|
||||||
verticalOffset = 0;
|
verticalOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,49 +140,43 @@ void LCR_drawSkyStrip(int verticalOffset, uint8_t horizontalOffset)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < LCR_EFFECTIVE_RESOLUTION_X; ++i)
|
for (int i = 0; i < LCR_EFFECTIVE_RESOLUTION_X; ++i)
|
||||||
{
|
{
|
||||||
LCR_drawPixelUnsafe(x,y,10000);
|
// TODO: check z-buffer
|
||||||
|
|
||||||
|
int offsetX = (i / LCR_SETTING_SKY_SIZE + horizontalOffset)
|
||||||
|
% LCR_SKY_IMAGE_SIZE;
|
||||||
|
|
||||||
|
uint16_t pixel = *(skyLine + offsetX / 2);
|
||||||
|
|
||||||
|
pixel = offsetX % 2 ? (pixel >> 8) : (pixel & 0x00ff);
|
||||||
|
|
||||||
|
LCR_drawPixelUnsafe(i,verticalOffset,LCR_skyImages[pixel]);
|
||||||
}
|
}
|
||||||
|
|
||||||
skyY++;
|
|
||||||
verticalOffset++;
|
verticalOffset++;
|
||||||
|
|
||||||
|
if (verticalOffset % LCR_SETTING_SKY_SIZE == 0)
|
||||||
|
skyLine += LCR_SKY_IMAGE_SIZE / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
const uint16_t *pixel = LCR_skyImages + 256;
|
|
||||||
uint8_t odd = 1;
|
|
||||||
|
|
||||||
for (int y = 0; y < 128; ++y)
|
|
||||||
for (int x = 0; x < 128; ++x)
|
|
||||||
{
|
|
||||||
LCR_drawPixelUnsafe(x,y,
|
|
||||||
LCR_skyImages[
|
|
||||||
odd ? (*pixel & 0x00ff) : (*pixel >> 8) ]
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
if (odd)
|
|
||||||
odd = 0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
odd = 1;
|
|
||||||
pixel++;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
int aaa = 0;
|
||||||
|
|
||||||
uint8_t LCR_gameStep(uint32_t time)
|
uint8_t LCR_gameStep(uint32_t time)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
for (int i = 0; i < LCR_EFFECTIVE_RESOLUTION_X; ++i)
|
||||||
|
for (int j = 0; j < LCR_EFFECTIVE_RESOLUTION_Y; ++j)
|
||||||
|
LCR_drawPixelUnsafe(i,j,0);
|
||||||
|
|
||||||
for (int i = 0; i < LCR_KEYS_TOTAL; ++i)
|
for (int i = 0; i < LCR_KEYS_TOTAL; ++i)
|
||||||
_LCR_keyStates[i] = LCR_keyPressed(i);
|
_LCR_keyStates[i] = LCR_keyPressed(i);
|
||||||
|
|
||||||
LCR_drawSkyStrip();
|
LCR_drawSkyStrip(200 + aaa / 10,aaa / 30);
|
||||||
|
|
||||||
|
|
||||||
|
aaa = (aaa + 1) % 10000;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,8 +15,9 @@
|
||||||
|
|
||||||
#ifndef LCR_SETTING_SKY_SIZE
|
#ifndef LCR_SETTING_SKY_SIZE
|
||||||
/** Size of sky texture pixel, 0 turns off sky rendering. */
|
/** Size of sky texture pixel, 0 turns off sky rendering. */
|
||||||
#define LCR_SETTING_SKY_SIZE 1
|
#define LCR_SETTING_SKY_SIZE \
|
||||||
#define
|
(LCR_SETTING_RESOLUTION_X / 256 * LCR_SETTING_RESOLUTION_SUBDIVIDE)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef LCR_SETTING_MAP_MAX_SIZE
|
#ifndef LCR_SETTING_MAP_MAX_SIZE
|
||||||
/** Maximum number of blocks a map can consist of, decreasing will save RAM
|
/** Maximum number of blocks a map can consist of, decreasing will save RAM
|
||||||
|
|
Loading…
Reference in a new issue