Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
openjazz
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
openjazz
Commits
44f0912e
Commit
44f0912e
authored
Jun 27, 2010
by
alistert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Slightly improved Scene animation loading.
parent
947aa7ae
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
117 deletions
+83
-117
scene.cpp
src/scene/scene.cpp
+1
-1
scene.h
src/scene/scene.h
+1
-1
sceneload.cpp
src/scene/sceneload.cpp
+81
-115
No files found.
src/scene/scene.cpp
View file @
44f0912e
...
@@ -408,7 +408,7 @@ int Scene::play () {
...
@@ -408,7 +408,7 @@ int Scene::play () {
case
ESquareAniHeader
:
case
ESquareAniHeader
:
loadCompactedMem
(
currentFrame
->
frameSize
,
currentFrame
->
frameData
,
(
unsigned
char
*
)
animation
->
background
->
pixels
,
SW
,
SH
);
loadCompactedMem
(
currentFrame
->
frameSize
,
currentFrame
->
frameData
,
(
unsigned
char
*
)
animation
->
background
->
pixels
);
break
;
break
;
...
...
src/scene/scene.h
View file @
44f0912e
...
@@ -234,7 +234,7 @@ class Scene {
...
@@ -234,7 +234,7 @@ class Scene {
void
loadScripts
(
File
*
f
);
void
loadScripts
(
File
*
f
);
void
loadData
(
File
*
f
);
void
loadData
(
File
*
f
);
void
loadAni
(
File
*
f
,
int
dataIndex
);
void
loadAni
(
File
*
f
,
int
dataIndex
);
void
loadCompactedMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pixdata
,
int
width
,
int
height
);
void
loadCompactedMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pixdata
);
void
loadFFMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pixdata
);
void
loadFFMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pixdata
);
unsigned
short
int
loadShortMem
(
unsigned
char
**
data
);
unsigned
short
int
loadShortMem
(
unsigned
char
**
data
);
...
...
src/scene/sceneload.cpp
View file @
44f0912e
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
#include "io/file.h"
#include "io/file.h"
#include "io/gfx/font.h"
#include "io/gfx/font.h"
#include "io/gfx/video.h"
#include "io/gfx/video.h"
#include "util.h"
#include <string.h>
#include <string.h>
...
@@ -48,49 +49,31 @@ unsigned short int Scene::loadShortMem (unsigned char** data) {
...
@@ -48,49 +49,31 @@ unsigned short int Scene::loadShortMem (unsigned char** data) {
}
}
void
Scene
::
loadFFMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pix
data
)
{
void
Scene
::
loadFFMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pix
els
)
{
int
pixels
=
0
;
unsigned
char
*
nextPixel
=
pixels
;
unsigned
char
*
nextData
=
frameData
;
int
fillWidth
=
0
;
int
fillWidth
=
0
;
unsigned
char
fillColor
=
0
;
unsigned
char
header
;
bool
trans
=
true
;
bool
trans
=
true
;
int
opCodeNo
=
0
;
unsigned
char
*
repeatPos
=
NULL
;
unsigned
char
*
startPix
=
pixdata
;
unsigned
char
*
framestart
=
frameData
;
/*FILE* out = fopen("c:\\output.dat", "wb");
/*FILE* out = fopen("c:\\output.dat", "wb");
fwrite(frameData, size, 1, out);
fwrite(frameData, size, 1, out);
fclose(out);*/
fclose(out);*/
while
(
size
>
0
&&
pixels
<
64000
)
{
while
(
(
nextData
<
frameData
+
size
)
&&
(
nextPixel
<
pixels
+
(
SW
*
SH
))
)
{
LOG
(
"PL FF frame offset"
,
frameData
-
framestart
);
LOG
(
"PL FF frame offset"
,
nextData
-
frameStart
);
opCodeNo
++
;
header
=
*
nextData
;
fflush
(
stderr
);
nextData
++
;
unsigned
char
header
=
*
frameData
;
frameData
++
;
if
((
header
&
0x7F
)
==
0x7F
)
{
if
((
header
&
0x7F
)
==
0x7F
)
{
fillWidth
=
loadShortMem
(
&
frame
Data
);
fillWidth
=
loadShortMem
(
&
next
Data
);
if
(
trans
)
fillWidth
+=
255
;
if
(
trans
)
fillWidth
+=
255
;
if
(
header
&
0x80
)
{
LOG
(
"PL FF 0x7f skip"
,
fillWidth
);
LOG
(
"PL FF 0xff skip"
,
fillWidth
);
}
else
{
fillColor
=
*
frameData
;
frameData
++
;
//memset(pixdata, fillColor, fillWidth);
LOG
(
"PL FF 0x7f fillWidth"
,
fillWidth
);
}
size
-=
2
;
}
else
if
(
header
)
{
}
else
if
(
header
)
{
...
@@ -108,10 +91,9 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
...
@@ -108,10 +91,9 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
LOG
(
"PL FF 0x00 Copy bytes"
,
header
);
LOG
(
"PL FF 0x00 Copy bytes"
,
header
);
memcpy
(
pixdata
,
frame
Data
,
fillWidth
);
memcpy
(
nextPixel
,
next
Data
,
fillWidth
);
frameData
+=
fillWidth
;
nextData
+=
fillWidth
;
size
-=
fillWidth
;
}
}
...
@@ -121,7 +103,7 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
...
@@ -121,7 +103,7 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
LOG
(
"PL FF 0x20 fill next op"
,
fillWidth
);
LOG
(
"PL FF 0x20 fill next op"
,
fillWidth
);
if
(
pixdata
-
320
>=
startPix
)
memcpy
(
pixdata
,
pixdata
-
320
,
fillWidth
);
if
(
nextPixel
-
320
>=
pixels
)
memcpy
(
nextPixel
,
nextPixel
-
320
,
fillWidth
);
break
;
break
;
...
@@ -129,18 +111,26 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
...
@@ -129,18 +111,26 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
LOG
(
"PL FF 0x40 fillWidth"
,
fillWidth
);
LOG
(
"PL FF 0x40 fillWidth"
,
fillWidth
);
fillColor
=
*
frameData
;
memset
(
nextPixel
,
*
nextData
,
fillWidth
);
frameData
++
;
memset
(
pixdata
,
fillColor
,
fillWidth
);
nextData
++
;
size
--
;
break
;
break
;
case
0x60
:
case
0x60
:
LOG
(
"PL FF 0x60 skip"
,
header
);
LOG
(
"PL FF 0x60 header"
,
header
);
if
(
nextPixel
==
pixels
)
{
fillWidth
=
header
;
}
else
{
fillWidth
=
header
&
0x7F
;
nextPixel
-=
(
nextPixel
-
pixels
)
%
320
;
}
break
;
break
;
...
@@ -148,26 +138,20 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
...
@@ -148,26 +138,20 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
}
else
{
}
else
{
fillWidth
=
0
;
size
=
1
;
// end
LOG
(
"PL FF END OF STREAM"
,
size
);
LOG
(
"PL FF END OF STREAM"
,
size
);
return
;
}
}
pixdata
+=
fillWidth
;
nextPixel
+=
fillWidth
;
pixels
+=
fillWidth
;
if
(
header
&
0x80
)
trans
=
false
;
if
(
header
&
0x80
)
trans
=
false
;
else
trans
=
!
trans
;
else
trans
=
!
trans
;
size
--
;
SDL_Rect
dst
;
dst
.
x
=
(
canvasW
-
SW
)
>>
1
;
dst
.
y
=
(
canvasH
-
SH
)
>>
1
;
}
}
LOG
(
"PL FF pixels"
,
pixels
);
LOG
(
"PL FF pixels"
,
nextPixel
-
pixels
);
}
}
...
@@ -178,52 +162,42 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
...
@@ -178,52 +162,42 @@ void Scene::loadFFMem (int size, unsigned char* frameData, unsigned char* pixdat
* $8x Next x + 1 pixels are skipped, they're already the right color (Max val $FE)
* $8x Next x + 1 pixels are skipped, they're already the right color (Max val $FE)
* $FF $xxxx Skip next xxxx pixels of picture, they're already the right color
* $FF $xxxx Skip next xxxx pixels of picture, they're already the right color
*/
*/
void
Scene
::
loadCompactedMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pix
data
,
int
width
,
int
height
)
{
void
Scene
::
loadCompactedMem
(
int
size
,
unsigned
char
*
frameData
,
unsigned
char
*
pix
els
)
{
int
pixels
=
0
;
unsigned
char
*
nextPixel
=
pixels
;
int
fillWidth
=
0
;
unsigned
char
*
endpixdata
=
pixels
+
(
SW
*
SH
);
unsigned
char
*
endpixdata
=
pixdata
+
(
width
*
height
);
unsigned
char
*
fillstart
=
NULL
;
unsigned
char
*
fillstart
=
NULL
;
int
fillWidth
=
0
;
unsigned
char
header
;
while
(
size
>
0
)
{
while
(
size
>
0
)
{
unsigned
char
header
=
*
frameData
;
header
=
*
frameData
;
frameData
++
;
frameData
++
;
switch
(
header
)
{
if
(
header
==
0x7F
)
{
case
0x7F
:
{
fillWidth
=
loadShortMem
(
&
frameData
);
fillWidth
=
loadShortMem
(
&
frameData
);
unsigned
char
fillColor
=
*
frameData
;
unsigned
char
fillColor
=
*
frameData
;
frameData
++
;
frameData
++
;
fillstart
=
pixdata
;
fillstart
=
nextPixel
;
while
(
fillstart
+
fillWidth
<
endpixdata
)
{
while
(
fillstart
+
fillWidth
<
endpixdata
)
{
memset
(
fillstart
,
fillColor
,
fillWidth
);
memset
(
fillstart
,
fillColor
,
fillWidth
);
fillstart
+=
width
;
fillstart
+=
SW
;
}
}
size
-=
3
;
size
-=
3
;
}
}
else
if
(
header
==
0xFF
)
{
break
;
case
0xFF
:
fillWidth
=
loadShortMem
(
&
frameData
);
fillWidth
=
loadShortMem
(
&
frameData
);
size
-=
2
;
size
-=
2
;
break
;
}
else
if
(
header
&
0x80
)
{
default
:
if
(
header
&
0x80
)
{
fillWidth
=
(
header
-
0x80
)
+
1
;
fillWidth
=
(
header
-
0x80
)
+
1
;
...
@@ -233,12 +207,12 @@ void Scene::loadCompactedMem (int size, unsigned char* frameData, unsigned char*
...
@@ -233,12 +207,12 @@ void Scene::loadCompactedMem (int size, unsigned char* frameData, unsigned char*
frameData
++
;
frameData
++
;
fillWidth
=
(
header
-
0x40
)
+
1
;
fillWidth
=
(
header
-
0x40
)
+
1
;
fillstart
=
pixdata
;
fillstart
=
nextPixel
;
while
(
fillstart
+
fillWidth
<
endpixdata
)
{
while
(
fillstart
+
fillWidth
<
endpixdata
)
{
memset
(
fillstart
,
fillColor
,
fillWidth
);
memset
(
fillstart
,
fillColor
,
fillWidth
);
fillstart
+=
width
;
fillstart
+=
SW
;
}
}
...
@@ -256,39 +230,31 @@ void Scene::loadCompactedMem (int size, unsigned char* frameData, unsigned char*
...
@@ -256,39 +230,31 @@ void Scene::loadCompactedMem (int size, unsigned char* frameData, unsigned char*
if
(
color
!=
0xFF
)
{
if
(
color
!=
0xFF
)
{
fillstart
=
pixdata
;
fillstart
=
nextPixel
+
col
;
while
(
fillstart
<
endpixdata
)
{
while
(
fillstart
<
endpixdata
)
{
*
fillstart
=
color
;
*
fillstart
=
color
;
fillstart
+=
width
;
fillstart
+=
SW
;
}
}
}
}
pixdata
++
;
size
--
;
size
--
;
}
}
pixdata
-=
fillWidth
;
}
}
break
;
nextPixel
+=
fillWidth
;
}
pixdata
+=
fillWidth
;
pixels
+=
fillWidth
;
size
--
;
size
--
;
}
}
LOG
(
"PL Compacts pixels"
,
pixels
);
LOG
(
"PL Compacts pixels"
,
nextPixel
-
pixels
);
}
}
...
@@ -376,7 +342,7 @@ void Scene::loadAni (File *f, int dataIndex) {
...
@@ -376,7 +342,7 @@ void Scene::loadAni (File *f, int dataIndex) {
memset
(
pixels
,
0
,
SW
*
SH
);
memset
(
pixels
,
0
,
SW
*
SH
);
unsigned
char
*
frameData
;
unsigned
char
*
frameData
;
frameData
=
f
->
loadBlock
(
size
);
frameData
=
f
->
loadBlock
(
size
);
loadCompactedMem
(
size
,
frameData
,
pixels
,
SW
,
SH
);
loadCompactedMem
(
size
,
frameData
,
pixels
);
delete
[]
frameData
;
delete
[]
frameData
;
animations
->
background
=
createSurface
(
pixels
,
SW
,
SH
);
animations
->
background
=
createSurface
(
pixels
,
SW
,
SH
);
delete
[]
pixels
;
delete
[]
pixels
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment