mirror of
https://github.com/luksamuk/engine-psx.git
synced 2025-04-28 13:28:02 +03:00
Add collision tests
This commit is contained in:
parent
7cd01c2b4a
commit
77ba77b97e
5 changed files with 155 additions and 42 deletions
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -6,10 +6,10 @@
|
|||
<tileset firstgid="1" source="tiles128.tsx"/>
|
||||
<layer id="1" name="LAYER0" width="255" height="31">
|
||||
<data encoding="csv">
|
||||
12,0,0,0,7,12,12,12,12,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,7,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,7,12,12,12,12,12,9,9,12,12,12,12,12,12,12,12,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,7,12,8,0,0,0,12,12,9,9,9,9,9,12,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
7,12,12,12,12,3,0,0,0,6,2,2,2,2,2,2,2,2,2,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
7,12,12,12,12,3,0,0,0,6,2,2,12,12,2,12,12,12,12,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,7,12,12,12,12,12,8,1,1,0,0,0,0,0,7,12,12,12,2,5,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,4,8,0,0,7,12,1,1,1,1,0,0,0,0,0,0,0,0,7,12,2,5,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,4,12,12,12,3,0,0,0,12,1,1,1,1,0,0,0,0,0,0,0,0,0,12,12,12,2,5,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -43,8 +43,8 @@
|
|||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
|
36
src/level.c
36
src/level.c
|
@ -399,19 +399,19 @@ linecast(LevelData *lvl, TileMap128 *map128, TileMap16 *map16,
|
|||
num_chunks = 1;
|
||||
}
|
||||
|
||||
if(num_chunks > 1) {
|
||||
printf("chunks: %d+(%d,%d)=%d %d+(%d,%d)=%d\n",
|
||||
chunks[0],
|
||||
vchunkx[0], vchunky[0],
|
||||
lvl->layers[0].tiles[chunks[0]],
|
||||
chunks[1],
|
||||
vchunkx[1], vchunky[1],
|
||||
lvl->layers[0].tiles[chunks[1]]);
|
||||
} else {
|
||||
printf("chunk: %d+(%d,%d)=%d\n",
|
||||
chunks[0], vchunkx[0], vchunky[0],
|
||||
lvl->layers[0].tiles[chunks[0]]);
|
||||
}
|
||||
/* if(num_chunks > 1) { */
|
||||
/* printf("chunks: %d+(%d,%d)=%d %d+(%d,%d)=%d\n", */
|
||||
/* chunks[0], */
|
||||
/* vchunkx[0], vchunky[0], */
|
||||
/* lvl->layers[0].tiles[chunks[0]], */
|
||||
/* chunks[1], */
|
||||
/* vchunkx[1], vchunky[1], */
|
||||
/* lvl->layers[0].tiles[chunks[1]]); */
|
||||
/* } else { */
|
||||
/* printf("chunk: %d+(%d,%d)=%d\n", */
|
||||
/* chunks[0], vchunkx[0], vchunky[0], */
|
||||
/* lvl->layers[0].tiles[chunks[0]]); */
|
||||
/* } */
|
||||
|
||||
// 4. Per definition, our linecast can at most intersect two chunks, and
|
||||
// will affect exactly ONE or TWO pieces. So since we know the chunk or
|
||||
|
@ -426,7 +426,6 @@ linecast(LevelData *lvl, TileMap128 *map128, TileMap16 *map16,
|
|||
|
||||
// Further, if these pieces are the same, I only need to look at one of
|
||||
// them.
|
||||
uint8_t num_pieces = 2;
|
||||
int16_t pieces[2];
|
||||
int32_t vpiecex[2];
|
||||
int32_t vpiecey[2];
|
||||
|
@ -434,17 +433,10 @@ linecast(LevelData *lvl, TileMap128 *map128, TileMap16 *map16,
|
|||
pieces[1] = ((vchunky[1] >> 4) << 3) + (vchunkx[1] >> 4);
|
||||
|
||||
// mod 16 => AND with four least-significant bits
|
||||
//vpiecex[0] = vchunkx[0] % 16;
|
||||
//vpiecey[0] = vchunky[0] % 16;
|
||||
vpiecex[0] = vchunkx[0] & 0x0f;
|
||||
vpiecey[0] = vchunky[0] & 0x0f;
|
||||
|
||||
//if(pieces[0] != pieces[1]) {
|
||||
//vpiecex[1] = vchunkx[1] % 16;
|
||||
vpiecex[1] = vchunkx[1] & 0x0f;
|
||||
//vpiecey[1] = vchunky[1] % 16;
|
||||
vpiecey[1] = vchunky[1] & 0x0f;
|
||||
//} else num_pieces = 1;
|
||||
|
||||
// Get chunk address from level map
|
||||
chunks[0] = lvl->layers[0].tiles[chunks[0]];
|
||||
|
@ -493,6 +485,8 @@ linecast(LevelData *lvl, TileMap128 *map128, TileMap16 *map16,
|
|||
}
|
||||
}
|
||||
|
||||
/* printf("piece: %u=(%d,%d)\n", pieces[0], vpiecex[0], vpiecey[0]); */
|
||||
|
||||
// These pieces are supposed to be verified linearly. If piece 0 has
|
||||
// collision, identify the height on height mask and return the desired
|
||||
// x or y pushbacks.
|
||||
|
|
149
src/main.c
149
src/main.c
|
@ -68,7 +68,12 @@ static uint8_t music_channel = 1;
|
|||
|
||||
static VECTOR cam_pos = { 0 };
|
||||
|
||||
static CollisionEvent ev = { 0 };
|
||||
static CollisionEvent ev_grnd1 = { 0 };
|
||||
static CollisionEvent ev_grnd2 = { 0 };
|
||||
static CollisionEvent ev_left = { 0 };
|
||||
static CollisionEvent ev_right = { 0 };
|
||||
static CollisionEvent ev_ceil1 = { 0 };
|
||||
static CollisionEvent ev_ceil2 = { 0 };
|
||||
|
||||
void
|
||||
engine_init()
|
||||
|
@ -184,13 +189,120 @@ engine_update()
|
|||
|
||||
cam_pos = player.pos;
|
||||
|
||||
player_update(&player);
|
||||
|
||||
|
||||
ev = linecast(&leveldata, &map128, &map16,
|
||||
player.pos.vx >> 12, (player.pos.vy >> 12) + 8,
|
||||
1, 16); // 16px vertical downwards
|
||||
/* Collider linecasts */
|
||||
uint16_t
|
||||
anchorx = (player.pos.vx >> 12),
|
||||
anchory = (player.pos.vy >> 12) + 4;
|
||||
|
||||
uint16_t grn_ceil_dist = 8;
|
||||
uint16_t grn_mag = 12;
|
||||
uint16_t ceil_mag = 12;
|
||||
uint16_t left_mag = 12;
|
||||
uint16_t right_mag = 12;
|
||||
|
||||
ev_grnd1 = linecast(&leveldata, &map128, &map16,
|
||||
anchorx - grn_ceil_dist, anchory + 8,
|
||||
1, grn_mag);
|
||||
ev_grnd2 = linecast(&leveldata, &map128, &map16,
|
||||
anchorx + grn_ceil_dist, anchory + 8,
|
||||
1, grn_mag);
|
||||
|
||||
ev_ceil1 = linecast(&leveldata, &map128, &map16,
|
||||
anchorx - grn_ceil_dist, anchory - 8,
|
||||
1, -ceil_mag);
|
||||
ev_ceil2 = linecast(&leveldata, &map128, &map16,
|
||||
anchorx + grn_ceil_dist, anchory - 8,
|
||||
1, -ceil_mag);
|
||||
|
||||
// 16px horizontal to the left or to the right
|
||||
ev_left = linecast(&leveldata, &map128, &map16,
|
||||
anchorx, anchory,
|
||||
0, -left_mag);
|
||||
ev_right = linecast(&leveldata, &map128, &map16,
|
||||
anchorx, anchory,
|
||||
0, right_mag);
|
||||
|
||||
/* Draw Colliders */
|
||||
uint16_t
|
||||
ax = anchorx - (cam_pos.vx >> 12) + CENTERX,
|
||||
ay = anchory - (cam_pos.vy >> 12) + CENTERY;
|
||||
|
||||
LINE_F2 line;
|
||||
setLineF2(&line);
|
||||
|
||||
// Ground sensor left
|
||||
setRGB0(&line, 0, 93, 0);
|
||||
setXY2(&line, ax - grn_ceil_dist, ay + 8, ax - grn_ceil_dist, ay + 8 + grn_mag);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_grnd1.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax - grn_ceil_dist, ay + 8 + grn_mag, ax - grn_ceil_dist, ay + 8 + grn_mag);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Ground sensor right
|
||||
setRGB0(&line, 23, 99, 63);
|
||||
setXY2(&line, ax + grn_ceil_dist, ay + 8, ax + grn_ceil_dist, ay + 8 + grn_mag);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_grnd2.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax + grn_ceil_dist, ay + 8 + grn_mag, ax + grn_ceil_dist, ay + 8 + grn_mag);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Ceiling sensor left
|
||||
setRGB0(&line, 0, 68, 93);
|
||||
setXY2(&line, ax - grn_ceil_dist, ay - 8, ax - grn_ceil_dist, ay - 8 - ceil_mag);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_ceil1.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax - grn_ceil_dist, ay - 8 - ceil_mag, ax - grn_ceil_dist, ay - 8 - ceil_mag);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Ceiling sensor right
|
||||
setRGB0(&line, 99, 94, 23);
|
||||
setXY2(&line, ax + grn_ceil_dist, ay - 8, ax + grn_ceil_dist, ay - 8 - ceil_mag);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_ceil2.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax + grn_ceil_dist, ay - 8 - ceil_mag, ax + grn_ceil_dist, ay - 8 - ceil_mag);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Left sensor
|
||||
setRGB0(&line, 99, 23, 99);
|
||||
setXY2(&line, ax, ay, ax - left_mag, ay);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_left.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax - left_mag, ay, ax - left_mag, ay);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Right sensor
|
||||
setRGB0(&line, 99, 23, 99);
|
||||
setXY2(&line, ax, ay, ax + right_mag, ay);
|
||||
DrawPrim((void *)&line);
|
||||
// (dot)
|
||||
if(ev_right.collided) setRGB0(&line, 255, 0, 0);
|
||||
else setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax + right_mag, ay, ax + right_mag, ay);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
// Player center (dot)
|
||||
setRGB0(&line, 255, 255, 255);
|
||||
setXY2(&line, ax, ay, ax, ay);
|
||||
DrawPrim((void *)&line);
|
||||
|
||||
player_update(&player);
|
||||
}
|
||||
|
||||
// Text
|
||||
static char buffer[255] = { 0 };
|
||||
|
||||
void
|
||||
engine_draw()
|
||||
{
|
||||
|
@ -225,10 +337,10 @@ engine_draw()
|
|||
int nclip, otz;
|
||||
POLY_G4 *poly = (POLY_G4 *) get_next_prim();
|
||||
setPolyG4(poly);
|
||||
setRGB0(poly, 128, 0, 0);
|
||||
setRGB1(poly, 0, 128, 0);
|
||||
setRGB2(poly, 0, 0, 128);
|
||||
setRGB3(poly, 128, 128, 0);
|
||||
setRGB0(poly, 96, 0, 0);
|
||||
setRGB1(poly, 0, 96, 0);
|
||||
setRGB2(poly, 0, 0, 96);
|
||||
setRGB3(poly, 96, 96, 0);
|
||||
|
||||
nclip = RotAverageNclip4(
|
||||
&vertices[faces[i]],
|
||||
|
@ -250,8 +362,7 @@ engine_draw()
|
|||
uint32_t elapsed_sectors;
|
||||
sound_xa_get_elapsed_sectors(&elapsed_sectors);
|
||||
|
||||
// Text
|
||||
char buffer[255] = { 0 };
|
||||
|
||||
|
||||
// Sound debug
|
||||
snprintf(buffer, 255,
|
||||
|
@ -271,18 +382,26 @@ engine_draw()
|
|||
|
||||
// Player debug
|
||||
snprintf(buffer, 255,
|
||||
"CAM %08x %08x\n"
|
||||
/* "CAM %08x %08x\n" */
|
||||
"POS %08x %08x\n"
|
||||
"VEL %08x %08x\n"
|
||||
"GSP %08x\n"
|
||||
"DIR %c\n"
|
||||
"COL %1x %2d\n",
|
||||
cam_pos.vx, cam_pos.vy,
|
||||
"GRN %1x %2d // %1x %2d\n"
|
||||
"CEI %1x %2d // %1x %2d\n"
|
||||
"LEF %1x %2d\n"
|
||||
"RIG %1x %2d\n",
|
||||
/* cam_pos.vx, cam_pos.vy, */
|
||||
player.pos.vx, player.pos.vy,
|
||||
player.vel.vx, player.vel.vy,
|
||||
player.vel.vz,
|
||||
player.anim_dir >= 0 ? 'R' : 'L',
|
||||
ev.collided, ev.pushback);
|
||||
ev_grnd1.collided, ev_grnd1.pushback,
|
||||
ev_grnd2.collided, ev_grnd2.pushback,
|
||||
ev_ceil1.collided, ev_ceil1.pushback,
|
||||
ev_ceil2.collided, ev_ceil2.pushback,
|
||||
ev_left.collided, ev_left.pushback,
|
||||
ev_right.collided, ev_right.pushback);
|
||||
draw_text(8, 12, 0, buffer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue