Compare commits

...

643 Commits
0.9.8 ... 1.0

Author SHA1 Message Date
sudonim1@gmail.com
f665c8255c 1.0: Merged new release flag system.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5455 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-11-14 18:51:12 +00:00
sudonim1@gmail.com
1a5cf2eb9e A few more revs for the 1.0 branch.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5454 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-11-14 18:36:45 +00:00
sudonim1@gmail.com
de989426d3 1.0.1: Merged some revs, marked a load for not merging (clear bug fixes only) and experimentally started up a news file to make releases easier.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5424 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-10-01 19:47:36 +00:00
gregory.hainaut
1c4a900dbd 1.0:
* merge commit 5381 (that fixed some GSdx ogl crash)
* update debian package with the good branch name


git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5409 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-09-08 16:11:21 +00:00
ramapcsx2
b247a7db07 Cleanup part 3: Update the cmake files in /trunk and /1.0 and upload the readme and faq pdf to /trunk
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5361 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-06 12:00:29 +00:00
ramapcsx2
102af86ed7 Rename the 1.0.0 branch to 1.0 in case of further patches
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0@5352 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-04 14:39:53 +00:00
ramapcsx2
0dee679534 Re-added prafull to the beta testers list, he got lost somehow.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5350 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-01 00:48:00 +00:00
ramapcsx2
db493389d5 1.0 branch: Fixed typo in the readme.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5349 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-28 20:49:06 +00:00
sudonim1@gmail.com
0101433aa9 1.0.0: Merge r5347, remove zerogs and zerospu from installer.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5348 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-28 19:44:46 +00:00
ramapcsx2
02e04e2070 1.0 branch: Updated readme and faq by gigaherz. Thanks dude :p
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5340 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-14 23:13:38 +00:00
gregory.hainaut
3e1497f2f3 1.0.0 & trunk: add new language th_TH
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5339 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-11 19:48:37 +00:00
gregory.hainaut
3dcdec8ba3 1.0.0: debian: update the branch name to 1.0.0
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5338 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-08 07:27:05 +00:00
gregory.hainaut
703a38188e 1.0.0 & trunk:i18n update sv_SE
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5337 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-08 07:25:25 +00:00
gregory.hainaut
575a377dac trunk/branch: i18n: update zh_TW and de_DE
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5335 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-07 08:44:50 +00:00
ramapcsx2
7c6ee2c384 1.0 branch: Merged r5328 and r5330 (game database and Cutie CRC fixes).
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5334 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-03 16:42:35 +00:00
ramapcsx2
d39398ee5a 1.0 branch: Merge fix from r5301.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5333 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-03 13:59:04 +00:00
ramapcsx2
94cc3d4194 Merge installer fixes.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5332 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-07-03 10:33:39 +00:00
gregory.hainaut
753bd9c46b 1.0.0: sync linux change from trunk + po translation
(5289,5290,5305,5307,5308,5323)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5327 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-25 21:03:43 +00:00
refraction
9f2dabdeda GIF/1.0.0: Fix some condition bitching from my sloppy coding in r5277 and integrated the change in to the 1.0.0 branch as it will stop the emulator complaining about double interrupts.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5325 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-25 12:15:39 +00:00
ramapcsx2
b9112de1d1 1.0.0 branch:
Merged the SPU2X fixes.

git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5324 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-24 13:23:47 +00:00
ramapcsx2
b0da8c1a35 1.0.0 branch:
Preparing some docs for 1.0, part 3.

git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5298 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-17 02:01:57 +00:00
ramapcsx2
51dcde903c 1.0.0 branch:
Preparing some docs for 1.0, part 2.

git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5297 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-17 02:00:06 +00:00
ramapcsx2
b21e42115b 1.0.0 branch:
Preparing some docs for 1.0.

git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5296 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-17 01:57:54 +00:00
gregory.hainaut
b588e1063d 1.0.0: sync with branch.
Didn't take r5273 and 5277


git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5282 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-10 19:04:20 +00:00
refraction
ef6a802eab Merge regression fix to 1.0 branch
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5266 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-02 21:54:13 +00:00
gregory.hainaut
ff69b2b2cc 1.0.0 branch: one file was not merged properly
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5262 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-02 07:42:52 +00:00
refraction
3e09cb5aa2 Merge fix from r5260 in to 1.0.0 branch
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5261 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 22:26:11 +00:00
ramapcsx2
98a7871524 1.0 branch: Added missing merge information and latest updates from trunk.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5257 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 16:38:32 +00:00
gregory.hainaut
333b74c2a5 zzogl glsl: used the fog parameter correctly...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5256 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 14:26:37 +00:00
avihal
0dc1e7f4bb GSdx: CRC hacks: Remove duplicates (none left for now).
The following dup CRCs of were removed (leaving one):
0x7D4EA48F - Haunting Ground EU (now only Genji).
0x1A85E924 - DMC3 CH (now only GOW1)
0x7ACF7E03 - Spyro New beginning (now only ICO)

The following CRCs were removed without any negative effect:
0x2F123FD8 - GOW2 RU (same as US).
0x23A97857 - Star Ocean 3 JPUNDUB (same as US).



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5255 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 14:16:25 +00:00
gregory.hainaut
e8123fce61 1.0.0 branch:
* merge r5253 and 5252
* refresh mo files based on the branch code


git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5254 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 08:51:02 +00:00
gregory.hainaut
9cddbdc168 i18n:
* update es_ES/ko_KR
* fuzz id_ID/pcsx2_Iconized.po which is wrongly translated


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5253 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 08:35:03 +00:00
gregory.hainaut
85bfc2ed66 zzogl:
* Fix context code for the common shader and set the indices for the uniform... (will fix most of GLSL-related  black screen issue)
* some memory improvements were not merged from zzogl-dev branch


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5252 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-01 08:21:31 +00:00
ramapcsx2
9253a64a20 1.0 branch: Merged the latest GIF / VU Interpreter changes as well.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5251 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-31 18:45:34 +00:00
ramapcsx2
fd6511fc6e 1.0 branch: Merge back cmake changes, the debian unstable directory changes and the whole of zzogl-pg.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5250 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-31 18:40:35 +00:00
ramapcsx2
309516bc2b 1.0 branch: Merge of GSdx changes.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5249 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-31 10:49:04 +00:00
refraction
ca6b638303 VU Interpreter: Implement branch in branch delay slot handling, fixing hot wheels when using VU Interpreter. Might be buggy, but better than without it ;p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5248 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 21:18:31 +00:00
refraction
8862d0c963 Path3 Masking Fix: GGIF MFIFO didn't set the GIF state, also added the path 3 stalling stuff to there too.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5247 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 19:26:37 +00:00
refraction
489bce662d Path 3 games speed up. Stopping VIF looping when waiting for Path 3 to finish (can sometimes loop over 1000 times)
Examples of speed ups:

Outrun 2006

before 43.4 - 45.7
after  44.7 - 47.33

Grand Theft Auto: San Andreas
before 63 - 66.9
after  66 - 69.5

Need for Speed Most Wanted

before 33.0 - 33.3
after  33.22 - 33.57

Burnout 2

before 46.5 - 48.3
after  53.2 - 55.5

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5246 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 19:19:53 +00:00
refraction
098640b06a Path3: Stopped Path3 looping when MskPath3 is enabled, reduces the amount the recompiler has to exit, yeilding a small speed boost (but it is really small!)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5245 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 18:43:02 +00:00
avihal
bc4ec92600 GSdx: CRC hacks: Few CRCs from comments at r5214
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5244 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 15:04:17 +00:00
ramapcsx2
6287561e18 GSdx: Correct a small resource issue for merging.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5243 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 12:07:09 +00:00
ramapcsx2
e31b0755d0 1.0 branch: Merged in miscellaneous changes from trunk. Lots of changes in GSdx need Linux side verification before they can get in!
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5242 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-30 11:54:59 +00:00
gregory.hainaut
cfeb7a5b0a copyright: remove the special copyright note. Only impact trivial code (enum and register definition)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5241 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-29 06:59:33 +00:00
refraction
e27c7c4434 Merge of recent changes from trunk, GIF/VIF changes, MicroVU fixes, Locales and GSDX Typo. All other GS plugin changes omitted for the moment until people are happy with them to be sync'd
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5240 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-28 21:56:25 +00:00
ramapcsx2
a2908b4fed Found one more progressive scan flag and fixed a typo in the GSdx hacks.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5239 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-28 20:32:48 +00:00
ramapcsx2
52f1f50e45 1.0 branch: Biggest commit ever.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5238 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-28 20:09:46 +00:00
gregory.hainaut
0154639e19 zzogl glsl: optimize state change. With luck it would be less slower. At least GL trace is much smaller (Gow menu go down from 4600 to 3000!)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5237 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-27 15:34:48 +00:00
gregory.hainaut
8e2469d2b7 zzogl: fix compilation failure because of a wrongly refreshed patch
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5236 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-27 12:51:48 +00:00
gregory.hainaut
581219f48f i18n: revert es_ES of previous commit (files were empty)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5235 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-27 12:40:14 +00:00
gregory.hainaut
c18933be6e i18n:
* new language ms_MY
* update sv_SE, tr_TR, es_SE,zh_CN

If I forget someone ping me ;)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5234 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-27 10:24:09 +00:00
gregory.hainaut
f8875f12dc zzogl: rework dump test, to avoid bad mix between u32/u8
glsl4: Replace some define with function (ogl4 support function pointer). Explain how depth is computed in vertex shader


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5233 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-27 08:13:27 +00:00
gregory.hainaut
c6d8af0c7f gsdx-ogl: only enable AMD hack when linking ps2 related shader. Otherwise SV_Target1 in convert is wrongly remapped
zzogl: check harder that the previous primitive exist.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5232 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-26 09:58:37 +00:00
sudonim1@gmail.com
1b099aedd1 microVU: fixed a regression from r4940 that refraction caught when reviewing changes for a bug report. Might fix line of sight in MGS2 (the reported bug)? Might have something to do with the ace combat (forget which) collision detection? Might fix nothing but I'm pretty sure this is correct now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5229 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-25 16:23:44 +00:00
refraction
2a49700977 GIF: Fix for Terminator 3 & Growlanser 2&3 collection invisible screens.
*Noted small speed boosts on some games (Outrun up from 48fps to 52fps, MGS3 potentially gaining 1fps, Sega Tennis possibly 0.5fps), could be a freak occurrance tho :P

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5228 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-25 14:24:02 +00:00
gregory.hainaut
b594b3bd51 zzogl: revert a change of the zzogl-dev branch. Avoid to compute an empty frame in Persona 4 & tale of abyss (if someone can check the latter)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5227 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-25 06:44:22 +00:00
refraction
8b2ee14b04 GIF: Slight modification to earlier's work, curPath might not have been set right if no APATH at start.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5226 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-24 23:28:53 +00:00
refraction
407c8072f7 GIF: Ape Escape 2 fix, who thought it was a good idea to transfer data direct through the damn FIFO >.< Silly developers, i hate you! ;p
(love you really)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5225 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-24 18:57:23 +00:00
refraction
9bb28d3fec Gif/VIF:
-Path3 Masking Changes, Gif Unit now rolls the DMA back (Path3 only) if it is using the Masking and finishes mid DMA packet.
-Vif modified to be simpler in the transfer loop and fixes issues where Flushes are called at the end of a DMA packet.

Game fixes from changes:
Outrun 2006 - Water textures and general flickering fixed, also SW mode not required for half screen issue. Caused by GIF Path 3 stopping in the wrong place.
Star Wars Episode 3: Revenge of the Sith - DMA timeouts caused by Flush at end of packet.
Had to break savestates (version change!), sorry :(

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5224 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-24 18:46:00 +00:00
gregory.hainaut
e4e2366bce zzogl glsl:
* clean macro selection and redundant code
* Request GLSL Core profile instead of the compatibility profile


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5223 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-24 06:39:39 +00:00
refraction
739bcc6886 Path3 Masking: Games should no longer need the EE Timing fix. General fixes for Need for Speed Underground 2 and other games affected by the change. Hopefully Outrun and Terminator 3 will be ok now too, no promises (as i don't have the games)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5222 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-23 16:22:03 +00:00
avihal
31956dcb87 GSdx: CRC hacks: "Aggressive" mode (and related stuff).
- Added "Aggressive-CRC" checkbox at the HW hacks section of the config dialog.
- The following hacks are now activated only in aggressive mode:
  - God of War 2: disable water effect/lines, disable global haze.
  - FFX, FFX2, SSX3 (the full crc hack from r5214).
  - Shadow of the Colossus: disable (over)bloom.
- Reverted the Valkyrie Profile 2 hack to pre- r5214.
- Some CRC fixes by comments on r5214.
- Regression fix of dynamic crc hack (INITIAL_MODE = 0 didn't compile)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5221 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-23 06:38:37 +00:00
refraction
de62189834 Path3 Masking: Fix for Need For Speed Underground - This got broken when the new GIF Unit went in, probably affects many games which use streams of NOP commands before issuing the mask. Game still requires EE Timing Fix however.
VIF Stall Delay hack: Modified slightly for Onimusha Blade Warriors.  This expects the end of the packet to all be in the VIF1 FIFO (which doesn't exist) and the VIF to have finished, so the Stall is technically ignored now, doesn't hurt SOCOM 2.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5220 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-22 12:31:56 +00:00
gregory.hainaut
cdeaa5e03c zzogl: GLSL is working again for AMD gpu. Nvidia test is welcome
* properly release shader in release mode
* set stream format every time an array buffer is bound


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5219 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-21 06:43:28 +00:00
avihal
2db7ddaaa3 GSdx: Dynamic CRC hack: moved DYNA_DLL_PATH to GSdx/config.h.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5218 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-19 19:19:17 +00:00
avihal
f8014654da GSdx: CRC hacks: duplicates/stuff:
- Console message for duplicate CRCs on our list.
- Removed trivial duplicates.
- Added some CRCs from comments on r5214
- Soul Calibur 2 now has the same crc hack as Soul Calibur 3.

We still need to address the following 7 duplicates (most were already there before r5214):
{0x7D4EA48F, HauntingGround, EU, 0},
{0x7D4EA48F, Genji, NoRegion, 0},

{0x7ACF7E03, ICO, NoRegion, 0},
{0x7ACF7E03, SpyroNewBeginning, NoRegion, 0},

{0x6BA2F6B9, ResidentEvil4, NoRegion, 0},
{0x6BA2F6B9, ResidentEvil4, EU, 0},

{0xD6385328, GodOfWar, US, 0},
{0xD6385328, GodOfWar, NoRegion, 0},

{0x1A85E924, GodOfWar, NoRegion, 0},
{0x1A85E924, DevilMayCry3, CH, 0},

{0x2F123FD8, GodOfWar2, RU, 0},
{0x2F123FD8, GodOfWar2, US, 0},

{0x23A97857, StarOcean3, US, 0},
{0x23A97857, StarOcean3, JPUNDUB, 0}

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5217 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-19 18:31:53 +00:00
avihal
f889dcd62f GSdx: Dyna crc hack: adds version info (for r5125).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5216 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-19 08:20:30 +00:00
avihal
253c0078d3 GSdx: Dynamic CRC hack: now supports CRC
.
Allows to have a single dynaCRC DLL for several games, differentiated by their CRCs by using the new utility IsCRC(0x12345678, 0x87654321, ...).
Note: With old GSdx (and updated new DynaCrcHack.c), IsCRC always returns false.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5215 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-19 08:04:12 +00:00
avihal
13df336966 GSdx: CRC Hacks: Import from Cutie - PLEASE HELP WITH TESTING:
- 14 Updated hacks, 41 new hacks (See full list at the first comment).
- New crc-hacks might have patial crc lists, so it's possible that some copies won't get the benefit (yet).
- Non crc-hacks code was NOT imported from Cutie, so some crc hacks might not be as effective as within Cutie itself.
- New region: CH, few more CRCs.

Note:
Due to the very big list of affected games, I couldn't test the vast majority of them, and so your help would be appreciated in testing. Please report (even if someone else already reported with the same result as yours) with the following format:
<game name> - <better/worse/same> (reason) - tested <little/medium/much>
e.g.:
Tomb Raider Legend - Better (removes garbage graphics) - tested a little.
GTA San Andreas - Better (removes ghosts) - tested a little.

And of course, big thank you goes to the author of Cutie, for the time put into improving PCSX2, and for respecting the GPL license and releasing the code.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5214 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-18 16:51:18 +00:00
gregory.hainaut
f47168568b gsdx linux: uses OGL device by default instead of GSnull. Issue arise when renderer is 0 -> device is GSnull but GSRenderer is ogl
debian: fix some typo


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5213 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-17 14:18:37 +00:00
gregory.hainaut
05fc11daf5 zzogl:
* some parameters was set after the shader setup. Extend the API to do the shader setup before the draw
* remove the useless shader compatibility bits


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5212 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-15 06:45:26 +00:00
gregory.hainaut
d062ca1727 zzogl:
* fix properly context, directly save the state in the shader
* replace the last deprecated variable in the shader. Remain the issue that host enable 1 output and the shader write 2 outputs
* It seems that VBO does't depends on the VAO but vertex format depends on both VBO/VAO so I set the format multiple time. Not sure the behavior is fully correct


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5211 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-15 06:40:45 +00:00
gregory.hainaut
e7de58c3e2 zzogl: plug vertex array object and remove most deprecated variable from shader. Only remains gl_FragData
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5210 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-13 20:22:15 +00:00
gregory.hainaut
7d7ca41187 gsdx, zzogl: avoid nested class inside GSVertexArrayOGL.h
zzogl: rework the shader interface to use struct like CG. Shader are still broken because some variables (gl_color & gl_secondary_color) are not supported in vertex shader...


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5209 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-13 17:22:36 +00:00
gregory.hainaut
36181d35bb zzogl:
* use 128 vertex buffer instead of 512 that will avoid to fill the GPU vram
* Use separate shader infrastructure for GLSL 4 as Nvidia cg. Beside code is much easier to understand


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5208 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-13 17:14:05 +00:00
gregory.hainaut
b665499a6b gsdx ogl:
* split GSDeviceOGl header. Will allow easy sharing with zzogl.
* fix some gcc warning
zzogl:
* import Uniform buffer and Vertex array from GSdx



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5207 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-13 17:09:18 +00:00
gregory.hainaut
2f9e35e5ae i18n: tr_TR pcsx2_Iconized is wrongly translated. I fuzzy all strings to have an english string instead of lookup key
various: apply some patch of Micove to disable debug logging in GSdx release mode 


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5206 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-11 20:52:50 +00:00
gregory.hainaut
d58bd29be0 debian: round 2
* rename file to easily switch between stable/unstable
* fix various lintian errors/warnings


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5205 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-11 20:26:03 +00:00
gregory.hainaut
510d2244ba debian: update of the package round1
* Use some (lots) of improvement from Micove package
* Merge all binary package into 1 would be easier for everyone


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5204 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-11 20:21:44 +00:00
gregory.hainaut
a7dbaed3b1 gsdx ogl: find a way to workaround the buggy amd driver to support dual blending
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5203 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-11 19:39:32 +00:00
gregory.hainaut
5dc57ace33 zzogl: fix visual studio...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5202 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-08 07:32:15 +00:00
gregory.hainaut
a8209d610b zzogl: Try to use opengl3/4 feature for GLSL api. The API is easier and I had a better experience with GSdx-ogl
* Clean the zzsetparameter API to always use the program for uniform that depends on the program. Future goal is to use a nice OO interface
* Use uniform buffer. Would allow future optimization and remove most initialization stuff. Don't support yet the 2 zzogl contexts.



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5201 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-07 19:51:58 +00:00
gregory.hainaut
75484d3059 cmake: apply some updated pathes of Micove
* drop hack for of Natty and use the std FindGtk2 module, time to upgrade to Precise.
* Bump cmake requirement to 2.8.5 to avoid multiarch issue
* Create new cmake variable GLSL_SHADER_DIR for glsl file.  Default value /usr/share/games/pcsx2


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5200 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-07 16:29:06 +00:00
gregory.hainaut
6e1643392c gsdx (Linux): fallback to opengl SW when SDL is selected but disabled
pcsx2: don't print window title in fullscreen because it create a white frame flickering. Seem like a wx regression


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5199 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-07 16:07:05 +00:00
gregory.hainaut
504490263e i18n: update id_ID (indonesian), add ko_KR (Korean)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5198 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-07 15:49:56 +00:00
avihal
e372fd7fd1 Config: Improvement for r5196: MTVU now completely unaffected by presets (including the first).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5197 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-03 23:53:56 +00:00
avihal
787529f0cf Config: Exclude MTVU from the presets.
Previously: All presets set MTVU to disabled.
Now: Presets don't affect MTVU (except for the first preset, which disables speed hacks altogether, so MTVU gets disabled implicitly)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5196 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-03 23:40:49 +00:00
sudonim1@gmail.com
91b1c0a4b4 Created release branch
git-svn-id: http://pcsx2.googlecode.com/svn/branches/1.0.0@5195 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-03 15:11:53 +00:00
ramapcsx2
1a152a3d83 Fix locale update mistake (hopefully)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5194 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-03 08:42:20 +00:00
ramapcsx2
55b44f8e37 Translation updates for de_DE
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5193 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-03 08:36:08 +00:00
gregory.hainaut
dac0a1eb0d i18n: the regulary update of po files
# some translations miss few bits:
locales/de_DE/pcsx2_Main.po -   522/  6/560   ( 93%)  -38
locales/hu_HU/pcsx2_Main.po -   522/  6/560   ( 93%)  -38
locales/id_ID/pcsx2_Iconized.po -    49/ 12/74    ( 66%)  -25
locales/id_ID/pcsx2_Main.po -   498/  7/560   ( 88%)  -62
locales/ru_RU/pcsx2_Main.po -   554/  6/560   ( 98%)  -6
locales/tr_TR/pcsx2_Main.po -   555/  6/560   ( 99%)  -5



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5192 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-02 17:48:15 +00:00
sudonim1@gmail.com
2eaba64af8 GSDx: Added missing initialisation primarily for the software renderer, fixes R-Type Final crash when using fast boot. Debugged by rama.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5191 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-02 16:27:23 +00:00
gregory.hainaut
bce948d820 cmake: add a bunch of Micove patch. Thanks.
* Add 2 new dev options: REBUILD_SHADER (nvidia cg) & BUILD_REPLAY_LOADERS
* zzogl-pg-cg will use the shader of zzogl-pg.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5190 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-01 10:54:52 +00:00
gregory.hainaut
8396c49eb5 zzogl:
* add some code to support OGL4 debugging. Not enable on CmakeList.txt by default
* LOAD_PS/LOAD_VS were using a "std" argument instead of a reference.
* reuse the opengl context creation developed for GSdx. For the moment only enable OGL2
* Add some documentation for the zzShader API


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5188 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-29 18:50:07 +00:00
gregory.hainaut
7cdb9fc2f2 gsdx: fix some Visual Studio build error of the previous merge.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5187 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 17:58:45 +00:00
gregory.hainaut
46838ca4ee gsdx: merge the opengl branch to ease futur development and allow GSdx by default on linux
* for the moment only the SW render is supported, hopefully HW will come some day. And linux only for the moment.
* Require an OpenGL3 GPU (==Dx10) ie Nvidia >= 8800, AMD >= HD2000)
* Require an OpenGL4.2 compatible drivers => no opensource driver supported neither Intel driver.
* Build by default without SDL support which will dropped later. You need to add this define "ENABLE_SDL_DEV" on Win.



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5186 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 15:24:02 +00:00
gregory.hainaut
f303da1c45 gsdx-ogl: fix potential build failure on MS
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5185 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 09:39:23 +00:00
gregory.hainaut
f5ee23aa37 gsdx-ogl: Update gui with latest option
* put shade boost in HW setting (not sure it is HW only)
* Remove logz, useless since openGL support 32bits Z buffer
* Update hack section with a table. Note don't put MSAA (not yet implemented) to have a nice square
Note: user hack is enabled with "UserHacks" instead of "allowHacks"


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5184 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 09:19:42 +00:00
gregory.hainaut
f8d573770e gsdx-ogl: forgot to add the glsl file...
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5182 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-27 06:30:09 +00:00
gregory.hainaut
6fd47b2907 gsdx-ogl: * implement shadeboost (only test the compilation)
Note: gui must be updated with new user hack


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5181 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-26 21:42:16 +00:00
gregory.hainaut
300ea42977 gsdx-ogl: sync from trunk 5179:5091
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5180 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-26 19:51:07 +00:00
ramapcsx2
2cb99f0e05 Preliminary NTSC progressive scan support.
The detection is based on a quickly reversed smode1 flag and needs to be done properly.
The timing itself also needs reversing and has only been tested on the VP2 intro video.
(That video now runs without audio / video desync when progressive scan is enabled :) )

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5179 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-26 17:07:36 +00:00
ramapcsx2
5dee597d9b GSdx:
Auto interlace mode, no more flickering! :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5178 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-25 08:46:51 +00:00
ramapcsx2
89ec3cb4e9 GSdx: A couple minor tweaks to the hacks dialog text. Nothing much changed but sounds nicer to me :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5177 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-24 14:24:58 +00:00
sudonim1@gmail.com
db39998f71 GSDx: I screwed up when doing an untested last minute manual cleanup of gsdx.rc, the mouse over descriptions will actually work now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5176 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-24 14:02:34 +00:00
gregory.hainaut
8eae370e86 cmake: doc renaming broke the package mode
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5175 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-24 06:49:14 +00:00
gregory.hainaut
3a12cc0589 linux build: use turbo ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5174 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-23 18:58:03 +00:00
sudonim1@gmail.com
a27142f1a6 Set some svn:eol-style properties.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5173 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-23 18:56:22 +00:00
gregory.hainaut
3d700b9264 spu2x: revert commit 5157. Soundtouch author change in mind and go for LGPL2+ so we come back to LGPL3+ to avoid license proliferation.
various:
* rename the man page as requested by arch users.
* Delete pcsx2/* symlink. Was only useful for autotool removed few years ago.
* commit the top metadata of my previous branch merge.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5172 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-23 18:55:24 +00:00
sudonim1@gmail.com
595de0a5eb GSDx: dehacked hover description code for hacks
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5171 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-23 18:46:09 +00:00
gregory.hainaut
22d9f16c02 zzogl: remvove old empty files
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5170 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-21 17:39:48 +00:00
gregory.hainaut
86ff5185b7 zzogl & VS: thanks Micove for the patch.
* fix failure with VS2008 & 2010


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5169 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-21 16:13:45 +00:00
gregory.hainaut
d487c57f11 zzogl & cmake: fix build failure of previous heavy change
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5168 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-20 16:48:03 +00:00
gregory.hainaut
fa4b9cb1a8 zzogl: bump the version to 0.4 because of the previous merge
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5167 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-19 21:53:00 +00:00
gregory.hainaut
e3c741bb2a zzogl: painfully merge the zzogl-dev branch
* new memory management
* asm was replaced by intrinsic
* new GLSL backend (AMD only) Cmake is probably broken anyway with the 2 plugins...
* and lots of others stuff that I forgot about it ;)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5166 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-19 21:22:08 +00:00
gregory.hainaut
8fcadb3616 zzogl: duplicate zzogl. The idea is to merge the dev branch to allow building/testing the 2 in concurency
Then it would be easier to separate CG/GLSL for copyright issue. CG is not compatible with the GPL...
Old version will be zzogl-pg-cg
Future version will be zzogl-pg



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5165 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-19 19:38:29 +00:00
avihal
4ef1ee3754 GSdx: F9 is now switching better between HW and SW renderer.
Previously: GSdx was switching between the configured renderer and the best SW renderer (best = DX11 if supported).
Now: If using DX: Switch SW/HW renderer and use the same DX version. If using SDL: same as before.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5164 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-19 19:10:24 +00:00
gregory.hainaut
fc5dd5a180 zzogl: fix Visual studio build. thank Miseru for the patch
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5163 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-18 17:01:24 +00:00
gregory.hainaut
ea98450eb0 copyright again:
* add some missing copyright header
* (l)GPLv* requires to have a full copy of the license. We already have them in various sub-directory but files in source root are easier to find


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5161 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-18 14:09:18 +00:00
ramapcsx2
26392e7f3e Change various logs to sound "nicer".
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5160 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-17 17:55:51 +00:00
gregory.hainaut
5936caa2fe cmake:
* build the utility to prebuilt cg shader (zzogl-shader)
* build the shader (ps2hw_cmake.dat) that would avoid copyright issue for debian/ubuntu


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5159 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-17 17:06:58 +00:00
ramapcsx2
05fd151a9e Small fix to mVU. Doesn't seem to help any game though.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5158 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-17 16:09:42 +00:00
gregory.hainaut
d75da041f6 copyright: soundtouch was LGPL2.1 not LGPL2.1+, add an header to launch_pcsx2_linux.sh
cmake: keep all library for the linking of plugins
hex2h.pl: add svn:executable


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5157 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-16 15:36:16 +00:00
gregory.hainaut
0f60fc2ffc cmake: svn remove my executable permission so directly call perl interpreter
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5156 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-12 19:09:25 +00:00
gregory.hainaut
5627b4dfaf copyright:
* change the man page to gpl3
* add missing copyrigh for zerogsshader
* re write bin2cpp tool (in perl) to avoid any copyright issue => hex2h.pl


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5155 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-12 17:52:43 +00:00
gregory.hainaut
72d47d547e copyright:
* update missing copyright on
 + plugins/GSdx/config.h
 + pcsx2/MTVU.h
 + plugins/zzogl-pg/opengl/ZZHacks.h
 + plugins/spu2-x/src/DplIIdecoder.cpp
* put a copyright for trivial script file
 + pcsx2/gui/Resources/rebuild.sh
 + tools/bin2app.sh
 + plugins/zzogl-pg/opengl/shaders.sh
* remove autotool from zzogl
* apply the patch for issue 1257. Thanks very much Micove for the hard work.




git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5154 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-12 06:30:35 +00:00
ramapcsx2
28de2a04c6 SPU2-X:
Update Portaudio to revision 1826. Hope the Linux side is fine :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5153 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-09 12:36:18 +00:00
gregory.hainaut
49f4168974 zzogl-pg: import GSdump feature from GSdx
* Only available on debug build
* ctrl F9 -> dump a couple of frames
* ctrl shift F9 -> start/stop a stream of frames.
* Build a replayer too, called pcsx2_ZZReplayLoader

Note: dump are saved in /tmp.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5152 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 21:23:01 +00:00
refraction
6c878aa2eb Removed the cycle counting from the new changes for now as there is a considerable speed hit, possibly later we can put a speed hack in there or game fix to emulate the timings correctly, unfortunately it can be a little too heavy.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5151 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 16:55:42 +00:00
sudonim1@gmail.com
6666180802 Handle exceptions raised inside the access violation exception filter which we use for various emulation tasks.
This was what made the MTVU shutdown issue undebuggable.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5150 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 15:35:53 +00:00
refraction
b3f8c59cf4 -Bumped savestate version, forgot to do that in my last commit.
-Fixed a bug stopping GT4 running.
-VIF now waits if the VU is busy rather than spinning, causing huge slowdowns.
-Filled in some bits i missed

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5149 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 12:27:19 +00:00
gregory.hainaut
c2bd837525 l10n: realigned translation with latest trunk.
Current (unfinished) translation status:
locales/de_DE/pcsx2_Main.po -   522/  4/560   ( 93%)  -38
locales/hu_HU/pcsx2_Main.po -   522/  4/560   ( 93%)  -38
locales/id_ID/pcsx2_Iconized.po -    49/ 12/74    ( 66%)  -25
locales/id_ID/pcsx2_Main.po -   498/  5/560   ( 88%)  -62
locales/ru_RU/pcsx2_Main.po -   554/  4/560   ( 98%)  -6
locales/tr_TR/pcsx2_Main.po -   555/  4/560   ( 99%)  -5


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5148 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 09:47:24 +00:00
refraction
d29a30c265 VIF: Reworked the VU delays in to scheduled events to simulate VU run time without killing Metal Saga or Fahrenheit. Adjusted the COP checks on the VU's to use the same method as the VPU_STAT is never set essentially so the VU is never "running".
Path3 Masking: Fixed a bug which caused persona 3 not to boot, previous a hack had been put in place to get around this.
VIF: Fixed a VIF error with the rare game Realta Nua, now goes through the prologue correctly. Game requires the EE timing hack to get rid of most of the noise (Path3 masking problem with new GIF unit, unfixable).

Expecting bugs, I will be monitoring this.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5147 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-07 01:48:34 +00:00
sudonim1@gmail.com
2e22e56b48 Fixed PGO builds, MSVC does not like inline asm for function calls.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5146 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-06 18:41:20 +00:00
refraction
8b563888f8 Fix for Issue 1145 - Issue introduced with VSync changed broke Dynasty Warrior games, this should resolve it. Id swapped the VSync order around but still swapped which Field first, so it started out of sync, silly me!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5145 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-06 14:00:12 +00:00
sudonim1@gmail.com
20b0627e8e MTVU: Move code out of header.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5144 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-06 11:34:02 +00:00
ramapcsx2
0ecca4b7de Workaround for the debug build assertion problem discussed in r5141.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5143 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-06 09:52:18 +00:00
sudonim1@gmail.com
5561415088 Workaround for the MTVU deadlock on exit issue. There are actually several issues which deserve closer examination here but this fixes the symptom of zombie pcsx2 instances.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5142 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-05 19:55:44 +00:00
ramapcsx2
4512a3cad0 A recently added fix for warnings under Linux is creating an assert on Windows.
The problem only affects debug builds but it should get a review.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5141 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-05 19:49:49 +00:00
gregory.hainaut
bda3cbe86f gsdx-ogl: fix build failure due to a leftover of a patch conflict
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5140 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-02 16:46:54 +00:00
ramapcsx2
03db2fcf4e SPU2-X:
Some games use volume slides combined with reversed phase. 
Gigaherz tweaked the code to handle this nicer (fixes Mashed Drive to Survive noises).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5139 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-01 14:09:24 +00:00
gregory.hainaut
b6954701e8 cmake linux: don't build zerospu2. Too much issue on linux, uses spu2x instead.
debian: fix nvidia cg dependency for latest Ubuntu


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5138 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-30 19:04:26 +00:00
gregory.hainaut
16a1fded96 gsdx-ogl: LINUX ONLY
* Keep the state of the draw buffer (save few opengl call)
* AMD fix the shader unloading (12.2 and above). So disable the workaround


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5137 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-30 19:02:37 +00:00
ramapcsx2
176e1de80c Game database update.
Lots of Korean titles added by 99skull. 
Thanks :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5136 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-30 07:28:14 +00:00
sudonim1@gmail.com
e017ccaa5d GSDx: Found the likely actual cause for the FFXII hack problems, probably introduced with index buffers. Also made the hack a little more crash proof and maybe fixed an off by one pixel error.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5135 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-23 21:00:22 +00:00
ramapcsx2
e8b96f51cb GSdx: Updating the CRC list with some Korean titles. Thanks for the list, 99skull.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5134 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-23 19:37:43 +00:00
ramapcsx2
1b883ab9ee GSdx:
Quick and sloppy fix for a sloppy hack, fixing FF12 pal. 
Thanks, pseudonym.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5133 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-17 12:55:02 +00:00
gregory.hainaut
9264b7725c pcsx2: gcc 4.7 compilation fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5132 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-17 11:21:51 +00:00
gregory.hainaut
79b9c1cb87 debian: update control file to support multiarch in latest ubuntu
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5131 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-15 20:25:36 +00:00
ramapcsx2
f9e4ba405c Gsdx:
Change a texture cache hack to fix half the flickering FMV games. 
It could have issues though, or randomly fix other stuff. Please test :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5130 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-15 16:16:51 +00:00
ramapcsx2
c77c184858 GSdx:
Fix Grandia Xtreme flicker :)
Could help other games as well, please test.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5129 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-15 12:44:18 +00:00
ramapcsx2
406ea42c43 Tests with Grandia Extreme's debugger suggest that SBUS interrupts *never* fire.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5128 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-14 13:10:14 +00:00
gregory.hainaut
ef37720cb9 i18n: nothing to see... Close issue 1237.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5127 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-11 08:35:40 +00:00
gregory.hainaut
4079af2ed7 i18n: update japan. Add french.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5126 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-10 20:11:21 +00:00
ramapcsx2
1b7bbcdb3d GSdx: Sprite hack update.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5125 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-08 17:43:21 +00:00
ramapcsx2
1595136a9d GSdx:
Another refinement to the Wild Arms hack by KrossX.
The hack now only applies to one kind of geometry (sent using  the unpacked UV handler).
This works nicer in Wild Arms as it fixes "jumpy" characters.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5124 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-08 17:18:22 +00:00
ramapcsx2
9aa9808c2f GSdx:
Mouse over descriptions for the hacks. Thanks to KrossX again, these are great :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5123 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-07 09:58:38 +00:00
ramapcsx2
144a7a13fb GSdx: Better DX9 implementation of the Wild Arms Hack. Thanks, KrossX :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5122 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-07 09:31:10 +00:00
ramapcsx2
ac97331388 GSdx: Fix for DX9 mode with the Wild Arms hack enabled.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5121 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 22:36:24 +00:00
ramapcsx2
b25aec19c1 GSdx:
Adding KrossX's Wild Arms text alignment hack to the new dialog box. This hack is actually very interesting for a number of games. It should work well in cases where game designers adjusted everything pixel perfect for the GS, that usually breaks with upscaling. 
It should be generalized and renamed later.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5120 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 21:36:59 +00:00
ramapcsx2
0d5e312bdb GSdx: Some descriptions and making the hack configure button always visible (for now).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5119 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 20:14:35 +00:00
ramapcsx2
d2665e9bc4 GSdx: The "enable hacks" checkbox works to toggle all hacks.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5118 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 20:01:27 +00:00
gregory.hainaut
6a0953ab94 cmake: sparsehash moves header file in newer version! Detect the 2 include pathes and add a define. Fix issue 1222
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5117 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 19:42:59 +00:00
ramapcsx2
30e538a3c6 GSdx:
Team effort of KrossX and myself: 
Finally adding that special game fixes / hack dialog I talked about for a while.
Committing this in several steps to clean up any issues easier.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5116 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 19:39:05 +00:00
ramapcsx2
2c96d8cf44 GSdx: Attempt to fix the resource files so MSVC likes them again. There's still line ending inconsistencies in the .rc though.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5115 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-06 18:28:59 +00:00
gregory.hainaut
d6e7ea4a4e GSdx-ogl: LINUX only
* request a minimum of 1 for texture dimension
* Use offscreen texture likes DX11. 
* add more bits for extra texture format 
* do operation on texture unit 0 to avoid ping-pong between unit 0/2


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5114 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-05 20:16:26 +00:00
ramapcsx2
886c23a4ee GSdx:
Better working shader for the new color settings. Taken from "TGM's shader pack" on 
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5113 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-29 15:49:01 +00:00
ramapcsx2
52a54fda62 Null pointer protection and warning in LilyPad and SPU2-X savestates and a small init fix in SPU2-X.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5112 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-29 14:51:55 +00:00
ramapcsx2
be4b7b1768 GSdx: Use the simpler psmain0 shader in convert.fx for ShadeBoost. Thanks KrossX :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5111 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-29 13:19:36 +00:00
ramapcsx2
954e7906ed GSdx: Added the color control functionality known as "ShadeBoost". Thanks to KrossX for initial converting / GUI work and Pseudonym for normalizing / fixing the maths.
Note: Not sure if it should be shader #7 or smth else :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5110 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-29 00:29:29 +00:00
ramapcsx2
0933ee2fd5 A couple minor changes, including a bad looking block manager bug that wasn't really all that bad :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5109 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-28 20:57:07 +00:00
gregory.hainaut
004eb6a2f7 i18n: update sv_SE too ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5108 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-28 12:07:06 +00:00
gregory.hainaut
df55023474 i18n: new language indonesian
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5107 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-28 11:28:31 +00:00
gregory.hainaut
2ea4b2fe49 i18n: refresh po/mo
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5106 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-28 11:22:02 +00:00
ramapcsx2
aa987595b4 Attempt to fix ICO NTSC CDVD flag bug that appeared in r4961.
Works with my copies of Time Crisis 2 and 3 as well.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5105 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-26 11:34:29 +00:00
ramapcsx2
538bc76686 GSdx: KrossX updated the sprite hack to also work on other games with a similar problem. It works with a 3 state checkbox now. Try to use full when half checked doesn't fix your game.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5104 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-25 20:06:39 +00:00
ramapcsx2
bc4ce5b1bf Removed the mVU block hack. This hack didn't help speed a lot (generally only about 2% if at all) but it caused slow downs and bugs in some games.
People enabled it for a performance boost and often got the reverse, so now it's gone.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5103 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-22 21:04:58 +00:00
ramapcsx2
3bbb2d6ed3 Small mistake fixed.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5102 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-22 20:05:41 +00:00
ramapcsx2
7e435329ca GSdx:
Committing a hack KrossX prepared (thanks) ;)
It can be used to fix bad character sprites in Gust games.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5101 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-22 19:53:59 +00:00
gabest11
78c1667a9c GSdx: Yakuza fix.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5100 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-15 18:57:52 +00:00
gabest11
344d0c09ce GSdx: check sprite edges! (r5098)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5099 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-14 22:22:56 +00:00
gabest11
f53d70c483 GSdx: fix for Vexx, a few vertices were bogus, s/t/q all zero.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5098 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-14 19:26:04 +00:00
gabest11
5d9a5b6ee6 GSdx: there was a float-int conversion overflow in vertex trace, texture coord min/max could have been detected wrong, silent hill origins should look better now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5097 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-14 08:03:27 +00:00
gabest11
67ef781116 GSdx: this may fix silent hill shadows and mister mosquito intro blur, also reduced texture cache keep-alive time from 30 to 10 frames and found two memory leaks, killzone can run a few seconds longer before crashing, I think there is something in pcsx2 allocating too much memory.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5096 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-12 17:56:06 +00:00
ramapcsx2
c641767431 GSdx: Offset_UV can be defined again. (Need it to hack Wild Arms 3 text placement issues)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5095 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-12 10:31:08 +00:00
gregory.hainaut
92f2ab38ae GSdx-ogl: LINUX only
* Use the new map interface/separate texture coordinate inside shader
* support new format on texture

Note: it is quite instable with various crashes and GL error but at least it compiles now :p 


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5094 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-11 10:22:02 +00:00
gregory.hainaut
b75b61cb1d linux compilation fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5093 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-10 21:18:47 +00:00
gabest11
da7324dbf2 Not transferring unused vif registers to the MTVU thread can save at least half of the ring buffer space. The whole set is about 400 bytes, including padding, but I could find references to only 6 regs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5092 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-10 07:03:55 +00:00
gregory.hainaut
4a00648d9f GSdx-ogl: LINUX only. sync from trunk (5068:5090)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5091 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-09 21:40:39 +00:00
gabest11
bc38796323 GSdx: full boot fixed, thanks for finding, I always use fast boot.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5090 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-08 20:21:18 +00:00
gabest11
19be605150 GSdx: this should fix xp/wine crashing when extrathreads > 0, and added a sprite drawing shortcut, hopefully won't break anything.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5089 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-08 16:57:14 +00:00
gregory.hainaut
4593b6ac52 gsdx: linux compilation fix. Gcc don't support same name for variable and template parameter
cmake: compilation fix on debian sid (and potentially ubuntu)
i18n: add some comment for potential language change in the future.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5088 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-06 18:16:49 +00:00
ramapcsx2
fb96f1d928 Set the EE round mode to nearest for SMT: Nocturne.
Fixes the problem where players can not use ladders mid-game.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5087 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-31 20:16:10 +00:00
gregory.hainaut
6680d285ea gsdx-ogl: linux only
* implement some missing shader for DATE, invert coordinate like strech rectangle
* Use glCopyImageSubDataNV nvidia extension to copy image (you need latest AMD drivers)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5086 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-31 17:08:05 +00:00
gabest11
fcc09c2cca GSdx: fixing two different bugs of the sw renderer, addressing outside the texture in region wrap mode (skygunner), and little gaps in shadows and other random places (dq8, rogue galaxy, okami).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5085 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-29 10:12:20 +00:00
gabest11
bd12a8b7b3 GSdx: silent hill shattered memories purple street light fix, not block aligned filled rects were not correctly masked, may also fix games which store texture data in the alpha channel but use 24-bit target buffers (or just mask it in every time) and draw a lot of those unaligned rects. (tested many .gs dumps, very rare combination)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5084 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-28 10:07:17 +00:00
gabest11
915a57d9f3 GSdx: more fun with shaders but nothing works yet.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5083 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-27 11:56:49 +00:00
gabest11
f47e261ade GSdx: fix for tokyo xtreme racing invisible letters, laz0rs did not set the texture size.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5082 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-23 05:26:07 +00:00
gabest11
899bad9dcb GSdx: reverted some of the changes of r5077, it breaks GoW.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5081 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-23 04:11:24 +00:00
gabest11
cd577ecd10 GSdx: a different fix for ZoE2, also seem to help DMC, so I removed the previous one, please check again.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5080 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-22 13:00:45 +00:00
gabest11
6efc7d6d83 GSdx: fixing dmc3 bugs with the sw renderer in multi-threaded mode.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5079 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-22 08:37:44 +00:00
gabest11
20cd5e9b81 GSdx: next attempt to fix frame skipping
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5078 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-21 12:34:36 +00:00
gabest11
9b8c753ead GSdx: broken frame skipping should be fixed, and a few random sw renderer optimizations.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5077 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-21 04:44:04 +00:00
gabest11
6a86a6520d GSdx: made a little mistake masking the unused giftag regs, when all 16 were in-use
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5076 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-20 00:34:44 +00:00
gabest11
5de9f84fae GSdx: quick fix for unreal tournament (and others using DATE)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5075 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-19 10:24:07 +00:00
gabest11
9ec7f14fa8 GSdx: Simplified vertex formats and the related code, everything works with the basic GSVertex until it gets uploaded to the vertex buffer.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5074 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-19 04:53:36 +00:00
ramapcsx2
d763bf6616 GSdx: Just some notes on the Disgaea 2 FMV border issue.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5073 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-18 15:44:14 +00:00
gabest11
9aabcc1701 GSdx: added a shortcut in GSState::Transfer for the most frequent vertex format I found (helps quite a lot), less thread-syncing for the sw renderer, and the bios boot logo was fixed (just had to clear the memory on reset).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5072 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-18 11:47:31 +00:00
gregory.hainaut
e0004b5027 gsdx-ogl: linux only
* Was easy, I forgot to set the type of the buffer.
* align shader change too


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5071 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-15 18:11:48 +00:00
gregory.hainaut
86a9910027 gsdx-ogl: linux only
compilation fix, add bits for the index buffer.
current status is blackscreen :p


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5070 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-15 17:25:49 +00:00
gregory.hainaut
0ad5982364 gsdx-ogl: linux only (merge from trunk 5022:5068)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5069 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-15 14:51:49 +00:00
gabest11
da4ea83134 GSdx: nothing really new, just testing the compute shader, if you are an expert take a look and tell me your opinion :P
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5068 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-13 18:10:05 +00:00
gregory.hainaut
cfedf41441 gsdx-ogl: linux only
* Fix some issue on wnd management, mix between sdl/ogl render
* create new gsdx option for ogl debug
  + debug_ogl_dump: start frame to dump when not 0
  + debug_ogl_dump_length: length of the dump
  + debug_ogl_shader: print shader debug
  Note current dump option must be fixed to use linux path.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5067 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-12 07:29:31 +00:00
gabest11
481f1fdda2 GSdx: it's hard to keep track of the leftover vertices properly, a bit of sps was still possible, psx sprites were fixed too
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5065 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-09 08:41:33 +00:00
gregory.hainaut
14b0572b61 gsdx-ogl:
* fix bad setup issue for constant blend factor
* Use a read framebuffer to read back the texture (less disruptive)
* cmake separate the loader to the main plugins


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5064 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 21:59:42 +00:00
gabest11
5b5a9787d9 GSdx: fixing a possible buffer overflow
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5063 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 21:02:42 +00:00
gabest11
2eec75c2ae GSdx: sps fixed, some code clean up and optimization, ps2 logo still broken in hw mode, I'll check it later
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5062 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 17:10:00 +00:00
arcum42
47985bc4fa gsdx-ogl: Since Texture Filtering has 3 states in Windows, change it to a combo box in Linux.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5061 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 06:24:10 +00:00
arcum42
969c2be7f7 gsdx-ogl: Added the hacks section to the dialog.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5060 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 05:54:48 +00:00
arcum42
8bb44cfcac gsdx-ogl: All the Windows versions get a fancy logo on top, so...
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5059 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 04:59:29 +00:00
arcum42
009f6e2dcb gsdx-ogl: Things now disable and reenable when appropriate.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5058 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 03:52:58 +00:00
arcum42
abd99c00f0 gsdx-ogl: Add msaa controls. (Probably doesn't actually do anything at the moment.)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5057 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 02:32:56 +00:00
arcum42
27de4b086d gsdx-ogl: Remodel the linux dialog box to make it look better.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5056 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-08 01:18:23 +00:00
arcum42
9de050a51f gsdx-ogl: Revise build.sh script, redoing the command line options.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5055 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-07 22:20:50 +00:00
arcum42
545df08ecc gsdx-ogl: Add a Native Resolution checkmark to the dialog box. Set a default for ModHeight & ModeWidth when saving the ini file. Link the gdsx static library against a few things.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5054 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-07 12:28:29 +00:00
gregory.hainaut
657da538de gsdx-ogl: was too shaky after all!
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5053 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 22:51:05 +00:00
gregory.hainaut
21724ddbf8 gsdx-ogl: add a loader to replay gs file. Quite shaky but probably enough for debug :)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5052 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 21:43:39 +00:00
ramapcsx2
872301fbeb Gsdx:
Let users set software parameters (extra threads and line AA) regardless of currently configured renderer. 
Makes testing far easier.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5051 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 09:55:23 +00:00
gregory.hainaut
53a5089d7b gsdx-ogl:
* fix some issue with cmake and new sdl define
* Implement shortcut key handling on linux.
    + some option are not yet implemented (fxaa)
    + gs dump can be created with <shift> <F8>


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5050 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 07:20:37 +00:00
gabest11
651196f665 GSdx: vtune tells me GSOffset::GetPages is too slow without the cache and its slowest part is new uint32[], lets use pre-allocated buffers then. In d3d9 mode, locking the vertex buffer is the most painful thing, there is a terrible delay until it returns, the same Map call in d3d10/11 does not behave like that.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5049 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 01:20:01 +00:00
gabest11
d8646e9dab GSdx: disable vtune
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5048 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 00:28:27 +00:00
gabest11
49f3aee099 GSdx: fixing the broken things...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5047 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-06 00:17:52 +00:00
gabest11
a8e8e6e80f GSdx: there is a possibility of calling GSState::Flush in the middle of a strip or fan, the last few vertices must be saved to be able to continue, haven't found anything with this problem though.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5046 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-05 04:40:47 +00:00
gabest11
f68f007f00 GSdx: the promised index buffer update, needed a lot of changes, expect bugs in the next dozen revisions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5045 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-05 02:40:24 +00:00
gregory.hainaut
0e80e0adca gsdx-ogl:
* add some define to enable/disable SDL so we could build gsdx without SDL
* debug: dump data based on frame count rather from draw count


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5044 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-04 23:19:17 +00:00
arcum42
4c5d1e11a8 gsdx-ogl: Fix a few glsl errors I missed last commit.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5043 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-04 11:14:57 +00:00
arcum42
0116402620 gsdx-ogl: Fix a few glsl errors. Comment out line 218 of GSDevice.cpp. Mess with the fifo hack a bit.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5042 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-04 10:42:53 +00:00
gregory.hainaut
76542f89c9 gsdx-ogl: code seems compatible with an opengl 3.3 context. Only load some shader extensions.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5041 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-03 17:17:04 +00:00
gregory.hainaut
cc6e486742 gsdx-ogl:
* add a new define (DISABLE_DUAL_BLEND) to easily test blend mode


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5040 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-03 16:12:34 +00:00
gregory.hainaut
90c52c27f6 gsdx-ogl:
* replace hexa debug value with nice string for standard human
* move things around


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5039 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-03 13:11:40 +00:00
gregory.hainaut
c1d7b81a55 gsdx-ogl:
* Use a geometry shader pass-through to replace previous AMD workaround
* various cosmetic change


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5038 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-02 20:08:11 +00:00
arcum42
bffde4fd5e Get rid of some irritating warnings in Linux.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5037 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-31 18:50:17 +00:00
gabest11
5325f9b490 GSdx: Small optimizations here and there, just saving changes before trying to add an index buffer, that might help reducing load on the main gs thread a bit. That's where I think the bottleneck currently is in games with high polygon count.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5036 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-31 15:41:07 +00:00
gregory.hainaut
2f4e2d8b6b GSdx-ogl: happy new years commit :)
* move all vertex buffer stuff into the class
* Bypass FIFO2 because of multithread issue with OGL(temporary workaround until we found a nicer solutions)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5035 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-31 14:38:58 +00:00
gregory.hainaut
9ca65c9cc6 gsdx-ogl: LINUX-ONLY
* invert the index of fragment output. Seem to work better on Nvidia (strangely no impact for AMD)
* opengl support pitch too, so remove useless copy to an fbo


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5034 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-30 22:25:17 +00:00
gregory.hainaut
ea33beb360 gsdx-ogl: LINUX-ONLY
* Fix the Geomtry shader to output 2 triangles for quad primitive (ie 2R rendering)
- There is an AMD  driver bug on geomtry shader input interface (well could be the spec too). Tell me if it still working on nvidia
* Add a workaroung to a previous AMD bug. It is impossible to unattach a shader so destroy the full shader pipeline...
* Be more strict on FBO management. Would optimize it later
* use a texture insted of a render buffer for depth-stencil management.
* add more dumping capabilities (in particular depth buffer)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5033 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-30 13:55:33 +00:00
ramapcsx2
b97dff6c89 Added a workaround for the savestate freeze bug in Gust games when the MTVU speedhack is active.
Aligning GIF packets on state save actions seems to cause some issues with the hack.

Still hope to find a better solution.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5032 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-29 17:08:17 +00:00
gregory.hainaut
000220f93f gsdx-ogl: LINUX-ONLY
* It works with the HW renderer !!!
* Not sure this fix will work with dual blending but we will see later
* screen is vertically flipped again...


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5031 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-29 14:39:53 +00:00
gregory.hainaut
aa499f4bfd gsdx-ogl: LINUX-ONLY
* fix vertex shader for HW renderer :) Remains the fragment part...
* add some dumping infrastucture (DUMP_START and DUMP_LENGTH)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5030 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-29 14:24:26 +00:00
avihal
f550ffe991 GUI: Exclude Turbo/SlowMo factors from the presets. (Now can keep custom turbo/slowmo speeds while still using the presets)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5029 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-28 22:59:16 +00:00
gabest11
6f97ca35e2 GSdx: GSOffset::GetPages was caching a ridiculous amount of data, it isn't that much slower without it.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5028 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-28 20:21:32 +00:00
gabest11
03bca19d99 GSdx: vs2008 fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5027 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-28 14:41:07 +00:00
gabest11
eaf06e8b1d GSdx: bit less idle time by refcouting used texture pages.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5026 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-28 14:10:20 +00:00
avihal
95b1c260af @gigahertz: some sensitivity is required when touching a small plugin! Let's hope I got it right :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5025 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 23:03:31 +00:00
gigaherz
c9c94978e5 <avih> hmm.. this is wrong(-ish). I've updated portaudio, but spu2x still shows as version r4949 ... can this be fixed? or maybe i didn't compile it properly?
...
<avih> so, come on, touch spu2x to have recent rev number

Touched... hopefully I touched right. Felt awkward.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5024 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 21:03:53 +00:00
gigaherz
5483473da0 portaudio: Updated codebase from svn 1748 to svn 1802.
Notable changes:
 - Changes to buffer size calculations and latency calculations.

Not a big update, just wanted to commit something before the year ended!


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5023 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 17:42:18 +00:00
gregory.hainaut
720a841cb2 gsdx-ogl: merge from trunk (4990:5021)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5022 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 17:04:28 +00:00
gregory.hainaut
4f6796916a gsdx linux:
* add the code to select the attribute (still the default but can be changed now)
* add a hidden option (condvar) to select between the 2 threads algorithm


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5021 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 13:14:30 +00:00
gregory.hainaut
ba14c557ed gsdx linux:
* use memory instead of tr1 (was the experimental implementation of c++11)
* remove strict aliasing optimization because I saw some bad warnings
* Fix pthread of the previous commit. Use default attribute but it might need some tuning


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5020 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 12:22:13 +00:00
gabest11
25072b99c7 GSdx: a few minor changes, please check if I wrapped the new pthread things correctly
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5019 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 09:15:35 +00:00
avihal
3aa3b1caf6 GSdx: Improved Genji CRC hack.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5018 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-27 08:28:32 +00:00
gregory.hainaut
7f3b11c7db gsdx:
* fix the new extra thread option in the gui dialog
* implement condition variable on linux. Will need some benchmark.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5017 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-26 22:30:59 +00:00
gabest11
2628d5bb7d GSdx: a little refinement to the fix for the issue that come up with Bully.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5016 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-25 07:26:42 +00:00
gabest11
ed8eb53c22 GSdx: Valkyrie Profile 2 fix (discussed under r5010 and r5012), this bug could have broken much more games, strange that it did not.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5015 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-24 15:02:48 +00:00
arcum42
fa5fcf47de Linux-only: Quick fix to the last commit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5014 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-24 11:25:44 +00:00
arcum42
48afd2c274 Linux-only: Removed a few obsolete files. Copied in a build script to make rebuilding the project a bit easier.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5013 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-24 11:15:42 +00:00
gabest11
bc7a930409 GSdx: This fixes the flickering in Bully, and probably games with the same problem. Could not check Valkyrie Profile Silmeria, yet.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5012 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-24 07:00:16 +00:00
ramapcsx2
7dfff148b8 GSdx: Hack around a problem with the texture cache finding depth stencils when there can't be any.
This makes the Arc the Lad fog issue go away.

Review would be nice though :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5011 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-23 20:58:10 +00:00
gabest11
963a6a653a GSdx: changes of r5007 did not help as much as I thought, disabled it for the time being, plus other minor optimizations
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5010 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-23 15:53:53 +00:00
gregory.hainaut
33a9ac370a gsdx-ogl: LINUX-ONLY
* implement offscreen and cache (mostly a copy past of dx)
* add the missing macro selector of the shader...


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5009 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-23 12:32:40 +00:00
gabest11
da41bcd756 GSdx: Replaced condvar/srwlock imports with getprocaddress, it should work on XP and compile on vs2010 express again.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5008 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-23 02:49:27 +00:00
gabest11
d5dbe7e7e9 GSdx: Moved filling up rendering threads on a new thread, to not block the main, it looks like now I can replace one of the spin loops with an event. Using events results in about -5% fps, but still pretty fast.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5007 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-22 14:36:54 +00:00
gregory.hainaut
6f5ac7b788 gsdx-ogl: LINUX-ONLY
* go back to opengl 4.1 (nvidia driver is buggy with 4.1).
* fix the backbuffer allocation. bad order of parameter
* fix remaining glsl error


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5006 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-22 14:12:12 +00:00
gabest11
2421c68bee GSdx: Saving the conditional var update (vista or better) before I try a new idea again. That Sync() call is wasting too much time, if there was only one queue then the main thread could also grab and process elements instead of just waiting for the workers.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5005 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-22 01:48:16 +00:00
avihal
5e0e4ce6a8 Fix Dynamic CRC hacks (got broken on r4991 )
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5004 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 23:35:30 +00:00
gregory.hainaut
a9927a6e33 gsdx-ogl: LINUX-ONLY
* rework a little the shader to be hopefully compatible with nvidia
* request a pure 4.2 context (all gpu 4.1 capable support 4.2 anyway)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5003 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 23:09:36 +00:00
gregory.hainaut
f604ba8d7f gsdx-ogl: LINUX-ONLY
Remove foreach feature not supported on old compiler


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5002 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 20:37:24 +00:00
gregory.hainaut
fff11cf207 i18n: add more fallback for some languages (thanks to pg)
cmake: implement the new XDG_STD options
It allow to move all pcsx2 data from $HOME/PCSX2 to $XDG_CONFIG_DIR/pcsx2. Clearly a matter of personnal preference.
debian: drop the useless stable packet from the trunk. Only keep a copy on branch release



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5001 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 20:27:03 +00:00
gregory.hainaut
9272be182e gsdx-ogl: LINUX-ONLY
* add the forgotten hardware renderer object.

Oh my gosh! Opengl is 20% faster than Dx!!!


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5000 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 19:08:31 +00:00
gabest11
1691ab2cf0 GSdx: fixed vs2008 build errors
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4999 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-21 00:08:00 +00:00
gabest11
0b62c17d9c GSdx: Renamed the sw thread setting to "extra threads".
- 0: no multi-threading
- 1: gif packet processing and texture uploads run parallel with rendering, the slowest decides the fps, dual-cores can still suffer by the spin loops, I'll check that when I compile pcsx2 on my notebook
- 2: two rendering threads, on a decent cpu packet processing is going to be slower now, this is probably going to increase fps the most on quads
- 3: small fps increase
- 4+: even smaller. 

If you have a quad cpu with HT, 6 is the max, 1 + 1 is needed for pcsx2 and gsdx's basic tasks.

Also hacked palette writes to not force a read-back in hw mode (added in previous rev), it hit render targets in a surprising large number of games.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4998 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-20 14:33:28 +00:00
gregory.hainaut
e4c70ad229 gsdx-ogl: LINUX-ONLY
Forgot the shader file...


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4997 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-19 21:04:16 +00:00
gregory.hainaut
83ad63a8a7 gsdx-ogl: LINUX-ONLY
* lay the foundation for the HW renderer on OGL


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4996 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-19 21:03:23 +00:00
gabest11
2f401da58c GSdx: fixed shared_ptr for GCC, but it does not seem to be thread-safe in 4.4.5.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4995 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-19 01:20:55 +00:00
gabest11
b7a70c9541 GSdx: Little bug slipped through.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4994 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-18 22:04:05 +00:00
gabest11
b86e3ebd19 GSdx: Polished the recent changes a bit. Single threaded mode should be back to normal, 2-4 threads might be faster or slower. All in all, it has a lot more potential now. Rendering is almost as separated as with d3d, everything needed is packed and copied for the worker threads, synchronization between local memory and the temporary buffers is properly done. This model could also be back-ported to d3d. Or the software rasterizers could be hardware assisted somehow, there are a lot less sync points where those buffers should match with the contents of the local memory.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4993 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-18 21:57:48 +00:00
gabest11
f318e84aca GSdx: Better multi-threading for the sw renderer. Threads must be synchronized lot less, 1/10th in average, can run parallel longer and uses more cpu (bit more empty spinning, too). There could be some new bugs, as usual.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4992 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-18 08:13:20 +00:00
gabest11
4b77052d21 GSdx: just saving minor changes.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4991 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-16 19:13:58 +00:00
gregory.hainaut
ab01926ed5 gsdx-ogl: LINUX-ONLY
* rewrite the vertex management with a nice GSVertexBufferState object
* extend GSUniformBufferOGL to use a better object interface
* properly delete texture
* manage buffer with glMap* instead of glBufferSubData


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4990 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-15 18:27:58 +00:00
gregory.hainaut
4029cc5195 gsdx-ogl: LINUX-ONLY
* constant buffer are attached to contexts not programs. So do it only once!


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4988 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-11 19:11:01 +00:00
gregory.hainaut
fbb224837d gsdx-ogl: LINUX-ONLY
* Enable interlace feature. (note I'm well aware that interlace crashes with SDL)
* remove useless callback debug function
* handle the y axis differently. Move vertex to follow right-hand system (render everything in reverse) then flip the y-axis for the screen rendering


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4987 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-11 19:09:08 +00:00
arcum42
be53385e9f gsdx-ogl: LINUX-ONLY * Sync with trunk. (r4970-4985)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4986 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-11 02:06:41 +00:00
gregory.hainaut
daf3c43681 gsdx-ogl: LINUX-ONLY
* improve vertex management with a vertex array. Decorrelate vertex from strech rec and others func (later for the HW renderer)
* fix the crash on nvidia when closing the window
* clean some texture management code


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4985 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-10 19:19:44 +00:00
arcum42
e6057b765f gsdx-ogl: LINUX-ONLY * Fix context creation. Get opengl working with nvidia graphics cards.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4984 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-10 11:56:34 +00:00
gregory.hainaut
afdb2dadc3 gsdx-ogl: LINUX-ONLY
* add a callback for GLERROR.  Allow to breakpoint on GSDeviceOGL::DebugCallback (gdb is completely lost on amd driver, hope it is better on nvidia)
* Add some empty glsl convert to shutup some useless debugging error
* request an advance opengl context without pre 3.0 feature.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4983 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-08 16:39:14 +00:00
gregory.hainaut
2be037d78f gsdx-ogl: LINUX-ONLY
* flip y-axis in merge stage
* default to xlib window managment (the dynamic switch between sdl and xlib crashi but SDL will probably dropped later)
* improve management of FBO, draw buffer
* try to fix some issue with glClearBuffer but spec is not clear.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4982 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-08 11:17:59 +00:00
gregory.hainaut
a835de0af7 gsdx-ogl: LINUX-ONLY
* implement the saving of texture (take bmp SW code)
* fix the missing "enable attribute code" and the typo in glsl. It works now !!!
* rework a little texture to pack texture into a temporay buffer when src pitch != dst pitch
* try to replace sdl with pure xlib (not yet enabled by default but it seems to work)

Note there still a minor issue, coordinate are different between DX and OGL (upper-left vs lower-left) so the image is inversed.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4981 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-07 22:05:46 +00:00
ramapcsx2
a2dd83b419 Make the CDVD speedhack safer by excluding full seek delays.
Tales of the Abyss should work with the hack now.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4980 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-05 07:58:11 +00:00
gabest11
df42f468be GSdx: recent changes caused some errors in line drawing (SoTC loading screen)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4979 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-04 18:35:16 +00:00
gabest11
9f470962e5 GSdx: less gaps between triangles, it was more noticeable with psx games, having a lower resolution.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4978 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-04 15:31:02 +00:00
gabest11
786f43a707 GSdx: more fixes to z-interpolation, THPS4 looks alright now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4977 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-04 09:49:55 +00:00
gabest11
0d7c58065a GSdx: this fixes some of the flickering in THPS, objects in the far distance still have some z-fighting problem, z values used are too large and too close to each other.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4976 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-03 21:04:46 +00:00
gabest11
f1537f53a2 GSdx: Found where the bypassed int z was destroyed. (bug appeared in r4967)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4975 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-12-01 17:08:10 +00:00
gregory.hainaut
eb3eafa090 gsdx-ogl:
* implement shader code (subset that seem to be used in SW mode)
* some hack to fix some alignment issue with GSVertexPT1 structure
* Lots of various opengl fixes. Remaining unsupported GL feature are inside SDL.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4974 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-30 21:42:41 +00:00
gregory.hainaut
133847e8a2 gsdx-ogl:
* Properly allocate/delete opengl object
* Request a debug context in SDL, add some code to log opengl error 
* Fix context creation. For the moment only request ogl4.1 (AMD does not support yet 4.2 and it needs libglew1.7 too...)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4973 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-26 11:46:51 +00:00
gabest11
9d54677055 GSdx: re-implemented the drawing pipeline in c++, just for reference and easier debugging.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4972 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-25 23:48:59 +00:00
gregory.hainaut
6125baa578 gsdx-ogl:
* make a rough implementation of most of the opengl device interface. Only a savestate nothing to expect yet.
* depend of libglew 1.6 (normally 1.7 but I manually defined the only missing function)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4971 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-21 22:36:03 +00:00
gregory.hainaut
da66ca7fd9 gsdx-ogl: preliminary work of an opengl backend. So far only skeleton and various note.
Current goal is to implement the SW render with pure opengl instead of SDL.
I plan to use OpenGL4.2 capability (the latest actually) => need libglew1.7 and a Dx11 capable GPU/drivers.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4970 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-16 22:17:37 +00:00
gregory.hainaut
b2ba781df8 Create a branch to play with a new GSdx backend
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@4969 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-16 21:34:12 +00:00
gregory.hainaut
6cf12e5721 i18n: refresh sv_SE and it_IT.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4968 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-16 19:19:16 +00:00
gabest11
4f6f53c188 GSdx: Just remembered triangles were occasionally converted to sprites, need to set t.w there as well.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4967 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-14 03:34:24 +00:00
gabest11
ee9c9ac8f3 GSdx: Added a simple workaround for the 32-bit z problem talked about in the comments of r4956. Since sprites are flat and there was an unused vertex member (t.w), I just decided to pass the raw uint32 value in that to the scanline drawing function. It does not fix triangles and other primitive types, of course. The ideal solution would be to break z into two parts (like 8:24 bits, and only care about the upper part when not zero), interpolate separately and rejoin when needed, it is just too hard to add another variable when the assembly code is already so tightly optimized to use every register.
(HW mode z-test expects a float input, so this trick cannot be done there.)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4966 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-14 03:08:13 +00:00
arcum42
c3536a1eb4 GSnull: More cleanup on the logging code. And lets actually put return characters in the log. :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4965 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-12 04:09:46 +00:00
gabest11
f47ef5e644 GSdx: as usual, going back to msvc, suddenly wild errors appear.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4964 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-08 13:22:54 +00:00
gabest11
0cf87a943b GSdx: GSRendererHW.h and GCC are good friends now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4963 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-08 13:12:54 +00:00
ramapcsx2
54688f1f98 Reverted r4942 as some games need this to work..
Fixes Metal Saga menus and should fix Fahrenheit, too.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4962 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-07 16:08:30 +00:00
ramapcsx2
278e4af235 Ateste worked on the Time Crisis fix some more and figured out the (hopefully) right flags in the (hopefully) right places.
Thanks for helping out! :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4961 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-07 12:33:12 +00:00
cottonvibes
f423a9c41d microVU:
- Rewrote and simplified the TriAce gamefix
VU interpreter:
- Implemented a TriAce gamefix for vu0 interpreter

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4960 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-07 10:20:56 +00:00
ramapcsx2
c234e1f6dd Forum user ateste was so kind and found/fixed a savestate issue with Lilypad :)
The problem would cause lost controls or "Controller disconnected" messages in a few games.
This fix is temporary and only works with Lilypad, until we take care of the core issue.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4959 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-07 09:29:36 +00:00
sudonim1@gmail.com
66db797478 Added CRCs to the DoA2 patches because pirate game copies are often based on DoA2. If your game identifies as DoA2 and it isn't, you're going to hell.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4958 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-06 22:20:50 +00:00
sudonim1@gmail.com
7c6c2cfd98 Game patch: Dead or Alive 2 (J) [SLPS-25002) playable with the R5900 recompiler. Does not make other versions playable, there seems to be a separate issue with them.
A proper fix for this is not happening nor is it even desirable because of the performance impact it would have, the game seems to unintentionally rely on the RPC arguments remaining in cache until sceSifCallRpc.  A slightly better patch is possible, this one eats some extra EE cycles and might theoretically make the game emulate at less than full speed (but probably won't in practice).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4957 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-06 21:43:26 +00:00
gabest11
67b12b3f92 GSdx: Also wrapping CLUT writes now, previous revision broke SFEX. CLUT buffer overruns are very rare, tell me if you find any other game doing it.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4956 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-02 21:15:44 +00:00
gabest11
b158f98fc7 GSdx: Bogus MSB bits of TEX0.CSA should be ignored as it looks. Only corrected where the palette is read (this fixes "Idol Janshi Suchie-Pai IV"), writes to the CLUT may be handled the same way, but so far no game has been found broken because of this.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4955 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-02 17:41:22 +00:00
refraction
14a7816e28 IPU bug fix by Shalma, well spotted ;p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4954 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-01 18:44:34 +00:00
ramapcsx2
3233952582 GSdx: CRC for FF12 Fr.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4953 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-11-01 10:15:52 +00:00
ramapcsx2
425f6779f1 Following shalma's recommendation, CDVD Status reads now also return the CDVD_STATUS_SPIN flag.
Apparently this is a common game breaker in PSX titles and it carried over to the PS2.
This fixes Time Crisis 2 loading and the frozen input in a horror game I have a dump of.

Please report any other titles you find fixed / broken! :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4952 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-31 16:12:38 +00:00
gregory.hainaut
c9b1e3c1aa cmake:
* new dev option CMAKE_BUILD_PO: control regeneration of po file. By default true in release build
* Add a hack for multiarch version of wxwidget 


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4951 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-31 10:25:24 +00:00
arcum42
d398e19b4d GSnull: Rework the logging code a bit. (The logging actually prints to the screen now, for one thing.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4950 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-30 01:39:43 +00:00
arcum42
5306b13472 More work on the compiler warnings. Removed the warning flags that are now set by default.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4949 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-30 00:32:22 +00:00
gregory.hainaut
93fe62f77e cmake: allow to easily set global compilation flags
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4948 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-29 11:39:06 +00:00
arcum42
251382aefe Change a few compiler options in Linux to remove a few warnings during compilation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4947 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-29 07:57:06 +00:00
ramapcsx2
b9d442d4f7 GSdx: CRC for Suikoden Tactics JP.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4946 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-27 17:19:55 +00:00
sudonim1@gmail.com
553635f00d SPU2-X: silly logic error in IRQA testing for DMA, fixes Atelier Iris, maybe others.
Thanks to rama for testing.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4945 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-27 15:34:14 +00:00
gabest11
60939bd9dd GSdx: Another psx bug-fix for chrono cross. Not fully sure about it, have to be tested. It is about not drawing larger than 1024x512 polygons. Peops also skips them, but only when one of the coordinates is negative, not explained why.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4944 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-24 21:34:38 +00:00
gabest11
c5e99a05ca GSdx: Corrected the line data terminator for psx games (fixes wild arms 2).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4943 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-24 07:58:43 +00:00
refraction
702f71d5f1 VIF: Removed the vu cycle counting craziness mentioned in r4941 comments. It was intended to pretend if the VU "ran" for longer than the VIF did, but it didn't really change a lot :P
Savestate version bump again

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4942 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-18 18:16:27 +00:00
ramapcsx2
d3f286e120 Fixed pretty bad bug of us counting cycles only for one VIF when the system has 2.
Also added a couple important global variables to be savestated (breaks old state compat).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4941 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-15 10:45:31 +00:00
cottonvibes
5488e082f5 microVU:
- Implemented an opcode profiler which prints statistics on how often VU opcodes are used (enabled with the mVUprofileProg macro)
- Get status flag conversion function to use EAX/ECX/EDX regs when being called from EE-rec (VU0 macro mode); this should play nicer with the EE-recs regalloc system.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4940 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-15 08:26:59 +00:00
ramapcsx2
2b3d5d0fa1 Lilypad: Fix wrong GUI description. Thanks bosit :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4939 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-14 10:17:19 +00:00
refraction
45c573068e Removed Ace Combat hack as r4937 seems to have solved the problem.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4938 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-13 15:00:22 +00:00
sudonim1@gmail.com
ecdc649694 mVU: Typo in CTC2 macro mode instruction for the status register case.
(Untested, unknown what if anything it fixes, possibly ace combat series but probably not.)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4937 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-13 01:07:42 +00:00
sudonim1@gmail.com
be1662074a Partial revert of r4935. REC_FUNC_DEL is functionally distinct from REC_FUNC. Fixed REC_FUNC_DEL definition.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4936 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-12 23:49:50 +00:00
refraction
c04eaf0f73 COP2: Fix/hack for Ace Combat 4 sky, you will need to tick the VU Flag Hack Speedhack to enable it (not sure what else to put it on without adding another hack). This is more likely to do with odd COP2/VU0 sharing pipe behaviour, but ill leave that for cotton :P
Also altered some of the interpreter calls so the defines in config.h can be used again (example the #define ARITHMETICIMM)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4935 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-12 22:54:21 +00:00
refraction
81d3961352 EERec: Small changes so Constant Propagation can be turned off (for testing purposes)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4934 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-12 20:12:40 +00:00
avihal
6d215a86ca BUGFIX: GS window sometimes stayed hidden after pause/config.
This fixes at least the following bug: Run a game -> ESC (GS Windows hides) -> config Video plugin and click OK -> Emulation resumes but GS window is hidden. (Solution was to click pause and then resume again, now it re-shows as it should).

Let me know if it breaks other related scenarios or if there are other similar scenarios that got fixed (or that still need fixing). E.g. pausing/configuration while at full screen, etc.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4933 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-11 22:27:30 +00:00
sudonim1@gmail.com
2e276316c6 (Patch from firnis) R5900int: As per MIPS documentation, do not modify the destination register if an overflow exception occurs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4932 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-11 13:03:24 +00:00
ramapcsx2
ae5ee1376c Lilypad:
Putting the tabulator keypress hack from r4916 on L3 instead of R3.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4929 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-09 16:20:13 +00:00
avihal
7f0f19ee02 Yakuza 1 CRC hack (seem to work better than previous one).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4928 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-09 07:43:10 +00:00
gigaherz
e08e540eb8 GSDX: Whoops sorry I mixed two conflicting ideas into one.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4927 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-08 16:53:40 +00:00
gigaherz
4d12e1954f GSDX: I didn't even like that code when I changed it. Now I know why. And it looks much better this way.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4926 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-08 16:52:58 +00:00
gigaherz
119e9e7114 GSDX:
- Use float instead of int for the video framerate. 
 - Use 59.94 instead of 60 for the ntsc framerate.
This replaces a previous hackfix with a better one, but it's still not ideal.
The ideal solution for the video encoding side would be to use an actual fraction (60000/1001) and pass this fraction to the encoder.
The ideal solution for the gsdx side would be to deduce the real framerate from the timing parameters.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4925 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-08 13:05:15 +00:00
gregory.hainaut
3e162556b7 i18n: upload sv_SE/es_ES/pl_PL/cs_CZ translation files
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4923 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-05 18:17:08 +00:00
shadowladyngemu
1455517630 GameDB and CRC updates....
other updates are welcome on issue 881

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4922 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-05 11:45:00 +00:00
shadowladyngemu
d953f053d8 GSdx fixes:
Skygunner crashing on boot.
James Bond 007: Everything or Nothing doing a huge Vram usage when opening the weapons screen and making the system crawl at it. Couldn't test much with this one and only added the US version for now.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4921 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-10-05 09:19:32 +00:00
gregory.hainaut
274246c557 i18n: long-awaited update. Big changes on pt_BR/sv_SE/zh_*
cmake: install also the man page


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4920 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-28 18:36:31 +00:00
shadowladyngemu
bf46aef661 Minimal changes to GameDB.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4919 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-26 12:08:20 +00:00
avihal
851bfba6f2 UI: Bugfix: normal keys were not handled by PCSX2 (can now be used as KB shortcuts, etc).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4918 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-12 16:35:30 +00:00
avihal
8b2aa64d7e UI: Keyboard shortcuts overrides via PCSX2_keys.ini
Keys combination can be:
"alt-" and/or "ctrl-" and/or "shift-" and ( F1-F12 or KP_0-KP_9 or SPECIAL1-SPECIAL20 )

Where:
Fn is function key n
KP_n is numpad number n
SPECIALn is hardware button n (whatever that means...)

Examples:
FullscreenToggle=alt-ctrl-f12
GSwindow_CycleAspectRatio=KP_0

See full configurable strings at the first comment.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4917 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-11 22:13:02 +00:00
ramapcsx2
45ae2cb4e8 LilyPad:
Added a new option to the hacks section that sends a tabulator key press to PCSX2.
This toggles the turbo mode of the emulator, so users with pads don't have to reach out to the keyboard anymore when they want to switch between normal and turbo gameplay :)

Note: 
I choose R3 for now since most games don't use that button. This could be made configurable in the future though.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4916 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-11 20:18:08 +00:00
avihal
d27f1877fc Oops. Now it's disabled by default ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4915 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-07 18:42:33 +00:00
avihal
b4a0af9769 GSdx: New: Dynamic CRC Hacks system (disabled by default).
See tools/dynacrchack/DynaCrcHack.c for full instructions.

For development of CRC hacks (and just for the fun of creating such a system), Allows GSdx to load and use CRC hack logic from an external DLL, and reload it, at runtime, whenever this DLL changes (but act normally if this DLL isn't found).

This external DLL is compiled from a single C source file (a sample is provided, containing the current MGS3 CRC hack logic). There's also a system to automatically compile this C file into the DLL whenever the C file is modified, thus creating a system of instant [save C file] -> [GSdx switches to the new logic].

It's actually a pretty cool system, and might have other usages where it's useful, for the sake of tests/development/tweaking, to modify code logic during runtime. The overhead of such system compared to pre-compiled code is very low (e.g., in the case of CRC hacks which are called thousands of times/sec, I couldn't notice any difference in performance).

Compilation of the C file is currently done using TCC (Tiny C Compiler - http://bellard.org/tcc/ - extremely fast, light and powerful). TCC itself needs to be downloaded separately (~250K download, no install required). The system currently supports Windows only.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4914 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-07 18:38:27 +00:00
gregory.hainaut
b19e31a1be cmake: fix some linking issue with gold linker (AFAIK only fedora use it for the moment)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4913 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-06 19:07:55 +00:00
avihal
337153c9a6 GSdx: CRC Hacks: Yakuza 1/2 - remove blur.
Reminder: See r4894 if you wish to disable specific CRC hacks.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4912 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-06 01:22:40 +00:00
gigaherz
4e762692da portaudio: Update codebase from svn 1723 to svn 1748.
Notable changes:
 - fixed latency calculations for some modules
 - improved stability of the internal ringbuffer
 - added float32<->uint8 sample conversion

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4911 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-05 22:05:14 +00:00
gregory.hainaut
c68bb1bb7f pcsx2: restore linux thread timing. pthread_getcpuclockid failed to check the validy of thread ID...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4910 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 21:27:11 +00:00
gregory.hainaut
b5959076e5 linux: clean various linux file into 1 directory
cmake: automatically install desktop/doc/xpm file in package mode as requested by Rafael
debian: align on latest change


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4909 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 20:39:19 +00:00
gregory.hainaut
0f354b7bcd pcsx2:linux: disable thread timing information. It seems to work only with eglibc (debian/ubuntu)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4908 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 17:07:00 +00:00
gigaherz
537dbcc58c USBqemu: Some small changes to init & savestates. The savestates are still incomplete though.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4907 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 16:10:00 +00:00
gigaherz
2e6a0eaf46 USBqemu: Forgot Devel exists ... xD
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4906 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 15:38:33 +00:00
gigaherz
433715f23e USBqemu: Fix release build.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4905 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 15:31:44 +00:00
gigaherz
ef50bc898d USBqemu: upgrade qemu core from version 0.12.5 to 0.15. Now its up to date with the latest qemu release.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4904 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 15:24:23 +00:00
gigaherz
34edc05ab8 Whoops.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4903 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 12:45:08 +00:00
gigaherz
2134c43ab0 USBqemu: Integrate into the build system for vs2010. Refactor the config stuff to use a system based on a modified SPU2-X CfgHelpers.cpp.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4902 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 11:48:28 +00:00
gigaherz
33b551e73f USBqemu: Work around the IRQ double-throw spam by having a min number of cycles between IRQ calls. 100% guaranteed hackyness, but I can still type in MH so it will do until I can look at it without my eyes closing against my will.
Also make the project output into the plugins folder.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4901 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 02:30:40 +00:00
gigaherz
3a4a215926 USBqemu: Missed a file.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4900 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 01:55:17 +00:00
gigaherz
ceab7de544 USBqemu:
- Upgraded some components of qemu-usb with a somewhat newer version from late 2010 (it was a recent version when I did the upgrades).
 - Fixed the plugin to work with recent versions of pcsx2. 

I will try to integrate the plugin into the build system tomorrow, and fix some more issues.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4899 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 01:53:30 +00:00
gigaherz
446bf31eb4 Whoops sorry the file slipped through.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4898 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 01:51:20 +00:00
gigaherz
266f6fcd5d Made USBsetRAM work again. Required for the following commit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4897 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 01:49:34 +00:00
gigaherz
a9d59b1b66 Copy USBqemu from the legacy plugins folder (to preserve history)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4896 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-04 01:36:14 +00:00
avihal
9314c5fed7 GSdx: bypass (prevent) some crashes.
Important: this is not a fix of the cause of the crashes, it just bypasses cases of sure crash. Once that spot is bypassed, things can go wrong elsewhere. Generally, however, things just continue normally. E.g. GT4 (camera changes), Tourist Trophy (camera changes), MGS3 (codec screen when CRC hacks are disabled) and probably more - now don't crash anymore, even at high resolution (but might still get some slowdowns).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4895 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-09-01 13:25:08 +00:00
avihal
4c57d1bbbe GSdx: CRC hacks: allow exclusion of some/all hacks via "hidden" ini pref CrcHacksExclusions.
The list is case insensitive and order insensitive.
E.g. Disable all CRC hacks:          CrcHacksExclusions=all
E.g. Disable hacks for these CRCs:   CrcHacksExclusions=0x0F0C4A9C, 0x0EE5646B, 0x7ACF7E03


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4894 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-30 12:48:54 +00:00
avihal
d4d95ff999 GSdx: Shadow of the colossus: crc hack: disable sky (extra) bloom (identical effect as Eliot's special SoTC GSdx build). Thanks to ShadowLady for the help.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4893 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-30 07:14:22 +00:00
avihal
7375307633 GSDX: Show message on console at capture start/end.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4892 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-30 07:11:36 +00:00
avihal
dcb7c08a5b SaveState backup: 1. Now enabled by default. 2. Now uses rename instead of copy (faster, more resilient to corruptions)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4891 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-30 06:33:05 +00:00
refraction
09af07d954 Morphed the Hotwheels hack into a gamefix to be safe!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4890 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 23:05:22 +00:00
refraction
c355393b5b Vif/Gif: Hack for Hotwheels World Race, should be pretty harmless at it's very rare conditions.
(Note: Game runs better on ZeroGS than GSDX)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4889 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 21:54:23 +00:00
ramapcsx2
915d2cc3a1 Let's keep the warning log in :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4888 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 18:57:58 +00:00
sudonim1@gmail.com
af32a833b1 Oops.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4887 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 18:43:02 +00:00
sudonim1@gmail.com
605f9cbc78 Fixed a bug in r4884, simplified implementation and added equivalent code to hwWrite16
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4886 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 18:41:45 +00:00
ramapcsx2
3d04b20ec8 Get some PSX mode logging to work again. We currently freeze with it reading the GPU_STATUS register as all 0.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4885 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 18:32:27 +00:00
refraction
f0ce6640ee DMAC: Well done Rama for finding this in r4882! Fixed it up a bit to work as intended + added INTC which should have also been there.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4884 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 15:25:38 +00:00
ramapcsx2
0046b0f1a6 Removed the silly log check and fixed the revision numbers from last commit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4883 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 11:18:46 +00:00
ramapcsx2
a2e5c497aa Fixed Virtual on Marz (or Mars) which does an 8 bit DMAC_STAT write.
This broke in r3705, which handles the write instead of ignoring it.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4882 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-29 11:09:26 +00:00
shadowladyngemu
8ceda3b102 git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4881 96395faa-99c1-11dd-bbfe-3dabce05a288 2011-08-28 19:52:11 +00:00
gregory.hainaut
bd1ed676ec pcsx2: implement thread timing on linux => display cpu usage on title bar
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4880 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-28 09:34:43 +00:00
gregory.hainaut
e55da1ab04 pcsx2: implement theading name on linux.
onepad: properly connect the latest button
sdl: do not compile some useless files (which fail to compile on my system btw)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4879 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-27 10:38:02 +00:00
refraction
ab19387935 Gamefix: Added gamefix for SOCOM 2 HUD corruption.
The game attempts to loads all data in to the VIF FIFO then stall it. Something goes very wrong.  Maybe one day ill replace this and the transformers gamefix with a FIFO we can turn on, but for now, this'll do.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4878 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-25 16:23:25 +00:00
refraction
7429e797fb Better alter this actually, there will always be one picky game which buggers this up ;p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4877 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-25 13:48:44 +00:00
refraction
737098ba8d MFIFO Changes:
* Vif: Altered how resumed transfers are handled slightly on VIF side (for MFIFO).  
* SPR: Now transfers data to the MFIFO even if not in MFIFO mode if it meets the conditions of the ring buffer location (SOCOM 2)

SOCOM 2 is now playable, sort of, the HUD is a mess (unless a tip shows up), looks like Path3 masking but isn't.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4876 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-25 13:36:23 +00:00
refraction
260b98fb92 Thats better, winmerge helps!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4875 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-23 18:37:04 +00:00
refraction
ad4aeca3ad SIF: Better fix in place for random hangs, Tom Clancy Rainbow Six Lockdown now Playable.
Hangs also related to Phantasy Star 4 and FFX Thunder Plains, which are both still ok with this. Also the sif dma errors in Legends of Legaia should be gone again!

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4874 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-23 18:30:40 +00:00
gregory.hainaut
783f600711 gsdx, sdl: cast window as expected by sdl
onepad: add an option to control forcefeeback level
cmake: add an hidden option (SHARED_SDL) to build SDL as a shared library to allow pre-load


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4873 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-20 12:17:47 +00:00
avihal
9bfbbf0a0c SPU2-X: Stretcher: fixed a bug which may be triggered by some compiler optimizations (floating point comparisons, doesn't happen with current VS2010 project). Thanks to pseudonym for tracking it down, reading tons of asm code, and learning x87 while at it...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4872 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-15 16:55:23 +00:00
gigaherz
e0bbc1b814 SPU2-X: Reworked the circular buffer functions for audio output, with a thread-safe version.
This hopefully avoids the issues appearing after long periods of continuous playing.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4871 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-14 22:06:18 +00:00
gregory.hainaut
d8b4c7ccc5 debian: cherry pick micove ppa improvement. Thank very much.
cmake: shutup some warning (mostly sdl...)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4870 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-14 14:38:26 +00:00
gregory.hainaut
9e98e7923a debian:
* drop build on 64 bits. It will be supported through multiarch
* switch to SDL1.3, allow to build GSdx


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4869 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 19:22:06 +00:00
gregory.hainaut
136300ab2e linux compilation fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4868 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 18:25:21 +00:00
gigaherz
94e79f781d SPU2-X: Fix one little bug in the spu2replay code and a few warnings discovered by warning level 4 + code analysis.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4867 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 14:47:36 +00:00
shadowladyngemu
b54fe4cb9e VS2010 Compile fix for r4865
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4866 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 03:31:25 +00:00
cottonvibes
ac9bf45f98 pcsx2: Implemented Threaded VU1 :D
Threading VU1 took a lot of rewrites and new code to make possible (MTGS, microVU, gifUnit...), but we finally got to the point where it was feasible, and now we've done it! (so now everyone can stop complaining that pcsx2 only takes advantages of 2 cores :p).

The speedups in the games that benefit from it are great if you have a cpu with 3+ cores (generally a 10~45% speedup), however games that are GS limited can be a slowdown (especially on dual core cpu's).

The option can be found in the speedhacks section as "MTVU (Multi-Threaded microVU1)". And when enabled it should should show the VU thread-time percentage on the title bar window (Like we currently do for EE/GS/UI threads).

It is listed as a speedhack because in order for threading VU1 to have been a speedup, we need to assume that games will not send gif packets containing Signal/Finish/Label commands from path 1 (vu1's xgkick). The good news is very-few games ever do this, so the compatibility of MTVU is very high (a game that does do this will likely hang).

Note: vs2010 builds and Linux builds need to be updated to include "MTVU.h" and "MTVU.cpp".


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4865 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 02:31:49 +00:00
gregory.hainaut
60cec5a9b0 spu2x: linux compilation fix.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4864 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-11 17:36:44 +00:00
shadowladyngemu
ae4bad0799 GSdx: CRC hackfixes for NanoBreaker and Kunoichi/Nightshade, removing the shadows that are not properly emulated and just cause 3D to look darker (NanoBreaker in D3D9 just showed a black screen with smoke effects ingame :p).
Minimal changes to the GameDB.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4863 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-11 12:54:57 +00:00
ramapcsx2
d3784af2ab Commit the SPU2-X compile fix from miseru99. GSdx CRC hackfix is included, too.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4862 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-11 09:15:03 +00:00
gigaherz
3373f6852b SPU2-X: Give some more range to the balancing, I realized its most probably safe for our ears ( an it seems to be based on testing ;P).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4861 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-10 21:21:49 +00:00
gigaherz
08b2cac8aa SPU2-X: Improved dplII decoder algorithm, it now generates more defined positional balance.
It's still most probably very wrong, but its sounding nice at least. ;P

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4860 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-10 20:59:40 +00:00
gigaherz
a4a40441c9 SPU2-X: Added config setting for ProLogic decoding level.
Refactored the ProLogicII code into a separate file and changed it to floating point math for easier debugging. 
Added a basic ProLogic decoder that doesn't try to do surround separation into L/R.

The setting does not have a GUI option yet, since the PLII decoder is experimental and doesn't give too good results.
To change it, set DplDecodingLevel to one of: 0=none, 1=ProLogic, 2=ProLogicII. The default is 0.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4859 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-10 20:08:29 +00:00
gigaherz
c0f9d1b619 SPU2-X: Added audio expansion support to the portaudio backend. This change also corrects the volume in normal stereo mode.
Removed an useless method from the module interfaces.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4858 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-10 13:17:41 +00:00
gigaherz
a22b36815c SPU2-X: kill a few warnings
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4857 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-10 11:59:08 +00:00
gregory.hainaut@gmail.com
b490282c55 spu2x: linux compilation fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4856 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-08 17:49:59 +00:00
ramapcsx2
9a1793b954 Added "portable.ini" to /bin, so SVN builds will work in portable mode by default.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4855 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-08 15:59:06 +00:00
gigaherz
224797c4ec SPU2-X: Experimental change! Lowered the lower latency limit to 3ms if the timestretcher is not being used. This latency will add up to the output latency as usual, but with a good sound chip this should allow overall latencies < 15ms.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4854 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-08 15:56:49 +00:00
gigaherz
f2bc219425 SPU2-X: Removed the std::vector I used out of lazyness. The config dialog should no longer keep an ever-growing list of devices, and it has less potential side-effects if somehow the portaudio device list changes while the dialog is open.
3rdparty/portaudio: Removed debug prints on release targets.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4853 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-08 13:59:19 +00:00
gigaherz
a5638b1466 SPU2-X: Added configuration dialog for the portaudio backend (windows only).
Added settings for customizing the suggested latency.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4852 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-08 12:49:33 +00:00
gigaherz
44f0cc140a SPU2-X / portaudio: Fix the requested latency from a hardcoded 200ms to "as close as you can to 64 samples / buffer".
Causes internal buffer size allocations to be as small as possible within portaudio and the OS, so it can have bad effects if the number turns out to be too small.
Would be nice if someone with a "real" audio card (Audigy, X-fi or similar) tested WASAPI Exclusive Mode, KS or ASIO with this change.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4851 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 16:37:59 +00:00
gigaherz
cb74fd2c10 3rdparty/portaudio: Updated to a slightly newer revision of portaudio, sicne the fixes in it seemed interesting enough.
I also enabled WDMKS backend, but I had to change some #defines to get it to compile, and I can't seem to be able to use it on my Win7 machine. If anyone on XP wants to try it, it will be at their own risk. (use WDMKS hostApi name on the .ini)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4850 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 12:40:25 +00:00
avihal
ddcfdb6d77 Test. Dummy commit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4849 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 09:33:27 +00:00
gigaherz
bb0100deea I went and copypasted the one line I typoed.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4848 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 01:55:44 +00:00
gigaherz
1886affc54 3rdparty/portaudio: Fixed portaudio not finding any device because there wasn't any API enabled. The new toggle system requires the compiler to specify the enabled APIs, instead of assuming default-on.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4847 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 01:53:24 +00:00
gigaherz
1d8e159433 3rdparty/portaudio: Fixed the build with vs2008 (I hope). I commited the wrong .vcproj file. Reverted to the previous one and updated the file with the same changes I did to the vs2010 .vcxproj
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4846 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 01:15:49 +00:00
gigaherz
dabe415929 3rdparty/portaudio: Fixed the build (windows). Somehow it compiled in devel/release, but not in debug. Should have failed in both of them though...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4845 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 00:58:00 +00:00
gigaherz
5a3cd8e57e 3rdparty/portaudio: Updated portaudio to the march 26 stable release (svn rev 1647). Too many changes to list here.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4844 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-07 00:50:05 +00:00
avihal@gmail.com
529f620e37 SPUX: New stretcher: Should be slightly more stable now, compared to r4840.
On 4840 I added dynamic tuning (which may have slight negative effect on stability) to adapt to different iterations/sec of different systems, but I didn't like this system too much. On 4840 I also made a small change which, I now understand, factors out the differences between systems in this regard, essentially making dynamic tuning not required anymore. So now dynamic tuning is disabled.

If you enable the SPU2X messages (and the overrun messages), you would see log messages similar to this:

buffers:   44 ms ( 89%), tempo: 1.000000, comp: 1.000, iters: 764, (N-IPS:750 -> avg:50, minokc:50, div:100)

If the iters value (764 at this example) on your system when running at 100% speed (50/60fps) is higher than 1000 or lower than 500, then please comment here and post few of the log lines.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4843 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-04 18:21:32 +00:00
avihal@gmail.com
fc359249e4 SPU2X: Better control of debug messages. (Now they actually print when enable at the SPU2X debug GUI).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4842 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-04 16:51:59 +00:00
ramapcsx2
0a4c082e4b SPU2-X: Clean up some logging code.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4841 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-04 14:27:21 +00:00
avihal@gmail.com
36fc051238 SPU2X: New stretcher: hopefully works better than r4834 (same goals as r4834: better resiliance to very high/low fps, compared to r4820).
I'm not fully happy with it, as it's a bit complicated for my taste, so feedback about how it performs will be appreciated.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4840 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-02 18:48:48 +00:00
gregory.hainaut@gmail.com
34569047b4 cmake: add/delete files
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4839 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-02 06:52:53 +00:00
ramapcsx2
527df7420b V2 of the previous GSdx hack: Now also works in pointlisted FMV's (FFX-2, Legend of Legaia).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4838 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-01 17:42:01 +00:00
ramapcsx2
e181358986 Hack for GSdx hardware to fix inverted videos that showed up with the new GIF rewrite.
The problem as I understood is is incomplete COLCLAMP support.
Thanks to sudo for the hack :)

(Unfortunately we couldn't find out more about why these FMV also *all* flicker.)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4837 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-01 17:18:13 +00:00
shadowladyngemu
c8b7b410a3 Fix VS2010 compiling. Patch by miseru99, thanks :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4836 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-01 15:40:20 +00:00
cottonvibes
f816748d72 microVU:
- Fixed a bug with mVU's ESIN implementation. This finally fixes the flower-petal bug in Radiata Stories (and hopefully the clouds-bug in VP2 but havn't tested). Rama and I have wanted to fix this for a long time, but never knew the problem :p
- Improved implementation of some undefined behavior that happens on branches to take into account pipeline stalls. 

gif / vif:
- Added some logging code that parses gif packets. It can be enabled by the PRINT_GIF_PACKET macro in Gif.h
- Deleted some old gif code.
- On ReadFIFO_VIF1() clear the out-reg to prevent uninitialized results in case GSreadFIFO() doesn't modify it...
- Create a fallback for GSreadFIFO2() so that its always defined (as long as the plugin implements GSreadFIFO()) 

pcsx2:
- Organized the virtual folders in vs2008 a bit...

Note: vs2010 and Linux builds need to be modified to add Gif_Logger.cpp and delete GIFpath.cpp


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4835 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-01 03:16:42 +00:00
avihal@gmail.com
92e67c218a SPU2X: New time stretcher: Improved behavior on extremes.
1. Much better behavior at extreme low/high FPS (less skips/lower latency).
2. As a result, I was able to reduce internal latency by 50% (50ms config now equals 100ms before).

Recommended latency config for stretcher: 100ms.
For rhythm games, if your FPS is very stable, I recommend 50ms.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4834 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-31 11:27:50 +00:00
shadowladyngemu
52a0eb047d GSdx: CRC hackfixes!
Summary of changes...

Fixed menus and HUD for Spyro: A New Beginning and Spyro: the Eternal Night.

Fixed missing dialogs and reduced the VRam usage a bit for Tales of Legendia ("8-bit textures" help a bit more with Vram/speed). Should be playable now in hardware mode. Thanks to rama for figuring it could be hackfixed this way and the initial patch :)

Half-screen fixes for Ty the Tasmanian Tiger 2, X-men Origins: Wolverine, Call of Duty: World at War - Final Fronts.

Modified the Star Wars: Force Unleashed hackfix a bit, shouldn't have the see-thru objects anymore.
Also modified the Metal Gear Solid 3 and Gran Turismo 4 hackfixes as they needed different skip values for each region (PAL/NTSC). Thanx to avih for the region code... and the free C/C++ lessons :P

The hackfix for Sly 3 was still showing stripes for 3-D and two-player modes, fixed for NTSC version now and hopefully works for PAL one too.

Couple GameDB updates after the gif rewrite.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4833 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-29 18:11:22 +00:00
cottonvibes
a4059b45b5 Bring back GSnull, zzogl, and old plugins from the dead!
(they were crashing with the new Gif rewrite... shouldn't anymore)

Although Jake had added the new "GSgifTransfer" callback to these plugins in the past, he forgot to modify the .def files so pcsx2 can actually use them :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4832 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-27 08:16:51 +00:00
cottonvibes
c918df60d2 newGif: do what r4829 did, except only flush the gs primitives to the mtgs when theres going to be a GS download (busdir=1).
this should be the only time that an explicit flushing is needed.
doing it this way should be faster than flushing every incomplete gs packet like r4829 was doing...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4831 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-27 03:55:43 +00:00
ramapcsx2
c2c19d7e96 New GIF: Quick fix from Cotton, fixes ICO and hopefully Tekken 4.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4830 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-26 17:53:54 +00:00
cottonvibes
d8149fdb8b newGif: send complete gs primitive packets to the gs plugin even if eop wasn't detected. this is needed for games that do GS->EE downloads to make sure the gs plugin is up-to-date with the sent gif data.
fixes Bleach bankai problem, and probably other games (wizardry/growlancer 3) but haven't tested...
Also removed a vif FlushA hack that used to be needed for tekken 4/gitaroo man but not anymore...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4829 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-26 08:47:47 +00:00
gabest11
bfbf403bf4 GSdx: FXAA 3.10, page up key activates it
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4828 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-25 11:16:01 +00:00
arcum42
0b09b84526 Fix Linux so that it compiles.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4827 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-25 10:24:05 +00:00
cottonvibes
1515949a98 will probably fix compilation errors on linux/gcc...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4826 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-25 08:46:07 +00:00
cottonvibes
44a186266a newGif - Fix Area 51 slowness.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4825 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-25 07:43:31 +00:00
gregory.hainaut@gmail.com
a100aac7cb cmake: add new Gif Unit files.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4824 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-25 06:29:53 +00:00
cottonvibes
7e1be9c489 pcsx2: deleted a lot of the old gif code.
some bits were kept for reference and should be deleted in the future (along with the entire GIFpath.cpp)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4823 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-24 22:24:10 +00:00
ramapcsx2
794904cf3c This should fix MSVC 2010 compiling.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4822 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-24 14:18:51 +00:00
cottonvibes
c05dc759e3 Big gif transfer code rewrite!
Pcsx2 now has a gifUnit class which acts like the ps2's gif and executes a single gif transfer at a time (and performs path arbitration according to priority and path3 slicing).

This new code is generally a speedup for most games. Particularly VU heavy games like GoW.
This revision breaks old saved state compatibility so don't update if you wish to keep playing with your old saved states.
Leave comments if this revision fixes or breaks anything...

Message to GS Plugin authors:
This new code now uses only 1 gif callback to transfer data to the gs plugin (GSgifTransfer).
pcsx2 also is garaunteed to send full GS primitives to the plugin. So you don't have to account for partial-transfers anymore.

Thanks goes out to shadowlady who tested around 500 games for me :D

Note 1: The old gif code is still in this revision, and can be enabled by the USE_OLD_GIF macro. The old code will be deleted soon.
Note 2: This revision also enables assertion dialogs in devel builds, and changed a lot of assume cases into assertions.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4821 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-24 13:02:50 +00:00
avihal@gmail.com
7cb4dbb8d9 SPU2X: New (simpler) time stretcher algorithm.
Should prevent erratic tempo variations near 100% speeds (compared to the previous implementation), and generally allow much lower latencies while keeping the audio stable (on all audio systems).
E.g. my tests show that at 70ms latency it can properly handle sharp speed variance of 50%-100%. If your game generally doesn't get slower than 70% speed, 50ms latency would probably be fine.

Note that on extreme scenarios (e.g. extreme sharp drops in speed) it doesn't try to keep the audio continues at all costs. If your game exhibits such behavior (audible clicks, etc), increasing the latency a bit at the config would help.

Comments on actual performance/quality on different systems would be greatly appreciated.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4820 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-24 10:58:42 +00:00
ramapcsx2
9a16937018 GSdx: Fix an old and silly bug that could cause slowness in native resolution hardware rendering. Thanks for debugging, Lana and avih.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4819 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-23 16:15:00 +00:00
avihal@gmail.com
073e5e2f3a Reverting r4796 (Console window now opens again before main window). Reason: The console window's menus were overlapping the main window menus, leading to main window menu actions getting invoked when using the console menus...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4818 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-23 10:19:53 +00:00
gregory.hainaut@gmail.com
6b8a605845 zzogl-pg: open the dat file...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4817 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-19 18:33:22 +00:00
ramapcsx2
f9b8f5c786 Silence a SIF dma warning.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4816 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-19 10:56:48 +00:00
gregory.hainaut@gmail.com
3f8d07572b cmake: fix install directory of shader file in package mode
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4815 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-18 20:02:17 +00:00
gregory.hainaut@gmail.com
71bff75810 cmake: generate resource outside of the source tree.
Debian: remove useless clean file


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4813 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-17 14:21:09 +00:00
gregory.hainaut@gmail.com
e5cedbe9d9 debian: reduce package complexity. Merge pcsx2-data (only 2 files) into pcsx2 and pcsx2-plugin.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4812 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-17 11:29:29 +00:00
gregory.hainaut@gmail.com
5adba505e7 pcsx2, zzogl-pg: allow to change some default path with compilation flags.
cmake: Add PLUGIN_DIR and GAMEINDEX_DIR options to easily select install directory. Install GameIndex.dbt during install phase.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4811 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-17 11:25:17 +00:00
arcum42
465dbc9203 SPU2-X: Fix the linux version, and add a checkbox for the de-alias filter.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4810 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-17 02:38:18 +00:00
shadowladyngemu
a88863ada2 SPU2-X:
Adding an option for the de-alias filter implemented in r4118,
currently overemphasizes the highs so it's disabled by default
but I like it for some games :P

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4809 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-16 12:41:29 +00:00
shadowladyngemu
ce8ee34251 Just a couple CRC and GameDB updates.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4808 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-16 03:20:04 +00:00
sudonim1@gmail.com
3286f0079e EE: very minor VTLB optimisation. Smaller than r4803 probably (but shouldn't have any possibility of slowing down any code).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4807 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-16 02:38:30 +00:00
gregory.hainaut@gmail.com
9b66620287 debian: align the package with latest cmake change.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4806 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-14 09:21:57 +00:00
gregory.hainaut@gmail.com
83b3ac85d3 cmake:
* use the standard 3 step flow: cmake, make, make install
* Remove L10N_PORTABLE option, superseeded by PACKAGE_MODE
* Extend PACKAGE_MODE to select the install directory (FHS or local bin)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4805 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-14 09:02:37 +00:00
gregory.hainaut@gmail.com
3eef469dfb cmake: be sure wx is present before fiddling with the include path
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4804 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-10 08:52:16 +00:00
sudonim1@gmail.com
fe66636625 EE: Changed some load/store flushing behaviour for better efficiency (and hopefully no bugs). Changed my mind about the internals for future exception handling so scrapped what we have for now. Also restored correct rt=r0 behaviour on all loads.
Should be a small boost in fps everywhere and otherwise likely not change anything.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4803 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-10 03:38:21 +00:00
ramapcsx2
cad9249b79 Fix for Endgame which tries to do 0 sector CDVD reads.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4802 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-09 23:47:12 +00:00
sudonim1@gmail.com
93163f988d EE: Fixed my use of ebx in a load/store implementation (reserved for return address) and changed _deleteEEreg to do what it says when also flushing and changed most uses of _deleteEEreg with the flush parameter set to 1 to _flushEEreg. May introduce or fix bugs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4801 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-08 06:18:25 +00:00
sudonim1@gmail.com
af2cc2663a EE: Put _Rt_ checks back in the load instructions because as silly as it would be we must avoid potentially writing to r0.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4800 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-08 04:24:24 +00:00
sudonim1@gmail.com
78a3c30648 EE: reviewed, simplified and corrected (at least three bugs including issue 1078) left and right loads and stores. Probably a waste since there's a much smarter way to do these.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4799 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-08 04:10:28 +00:00
sudonim1@gmail.com
1b294e1443 x86 emitter: fixed three encodings for shrd and shld, as in issue 1076. Thanks to "firnis" for finding this.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4798 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-07 22:37:59 +00:00
avihal@gmail.com
6b809a5210 Lilypad: re-enable "Auto Analog" option, but only use it when not in PS2 mode (in PS2 mode this option is ignored). Tested with ICO - previously wouldn't accept control input when in autoAnalog mode, now always works.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4797 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-06 15:39:11 +00:00
avihal@gmail.com
ab15e7d8b0 GUI: Open the main window (if required) before the console window. Results: 1. Taskbar order is now better. 2. Console window gets minimized with the main window. Thanks to ShadowLady for the code.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4796 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-06 00:59:52 +00:00
ramapcsx2
03e0e3dea6 Lilypad: Really hide the option. Sigh :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4795 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-05 23:26:14 +00:00
ramapcsx2
c03919eb18 Lilypad: Don't screw users which already had the problematic option set.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4794 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-05 23:09:31 +00:00
ramapcsx2
159f4a691f Lilypad: Disable a confusing control for now.
Also a small comment on GSdx's texture cache lookup.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4793 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-05 23:01:16 +00:00
shadowladyngemu
357030330a whoops...
it kinda works better if you make the hackfix use the function...

GSdx: Dragon Ball Z Budokai Tenkaichi 2's hackfix works with NTSC version now too.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4792 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-05 12:25:31 +00:00
shadowladyngemu
75070d6aaf GSdx: CRC hackfix for Midnight Club 3, fixes the huge vram usage when moving.
Small change to the Burnout hackfix, was skipping too much for NTSC.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4791 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-04 08:19:24 +00:00
shadowladyngemu
5f20a11cd5 GSdx: CRC hackfix for Burnout games, removes garbage from screen.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4790 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-04 05:31:47 +00:00
gregory.hainaut@gmail.com
7ecd913a7d onepad: remove deadcode
zzogl-pg: disable opengl3 context creation for the moment (crash with geforce7)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4789 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-01 09:01:50 +00:00
shadowladyngemu
774f90f642 whoopsie
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4788 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-01 05:32:04 +00:00
shadowladyngemu
539d313622 GSdx: CRC hackfix for Devil May Cry 3, removes bad postprocessing.
Adjusted the SW Battlefront hackfix for the PAL versions (NTSC-U and PAL versions have the same CRC but use slighty different buffer/texture addresses...)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4787 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-01 04:50:32 +00:00
ramapcsx2
e789cc84e2 Tray code once more:
Added the tray state variable to the cdvd struct, making it safer and taking care of a previously unhandled situation.
Surprisingly this didn't break old savestate compatibility.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4786 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-01 00:58:11 +00:00
ramapcsx2
f25d317460 Some work on the disc tray code. Got rid of an unsafe global, changed and commented it a bit.
This is some messy work of mine, gotta admit ><

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4785 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-01 00:15:14 +00:00
avihal@gmail.com
79fb112c88 Games database: Load from the exe folder (only affects Install mode. Portable was already OK): Prevent DB-not-found error if previous version wasn't uninstalled properly.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4784 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-30 20:54:30 +00:00
ramapcsx2
cdb54545fe We need to combine these globals into a common struct one day.
This was really unsafe to do. (My fault)
Fixes savestates in Breath of Fire 5.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4783 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-30 19:36:15 +00:00
shadowladyngemu
64e9a26993 GameDB: Added a lot of games that were missing from the database... still lots missing tho :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4782 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-28 23:07:17 +00:00
gregory.hainaut@gmail.com
89c48d526e onepad: slim down a little more the KeyStatus API
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4781 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-28 22:16:06 +00:00
gregory.hainaut@gmail.com
9cb19121e0 onepad: create a key_status object to handle key activities with a single press/release interface
GSdx: remove some linux dialog options which were already controlled by PCSX2


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4780 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-28 21:30:06 +00:00
ramapcsx2
73b46c4b7d SPU2-X: Version bump.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4779 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-27 22:54:25 +00:00
sudonim1@gmail.com
2a73457b4b SPU2-X: Apply Neill's recommended 2/3 multiplier to the input. The results still are not like on the PS2, but we're now as good as Neill's research allows. We'll have to do our own from here on.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4778 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-27 17:17:29 +00:00
gigaherz
99ee4a8df4 SPU2-X: Updated the spu2replay engine so it works again. Windows-only still, and it lacks a proper gui, but it can be used to dump the actions the game is doing and replay them later without the rest of the emulator.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4777 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 23:45:58 +00:00
ramapcsx2
5677ed5661 SPU2-X: Forgot to bump the savestate version.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4776 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 19:43:21 +00:00
ramapcsx2
6d9c794a63 SPU2-X: Short term reverb quality hack (half the input volume), until we settle for smth.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4775 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 19:28:58 +00:00
sudonim1@gmail.com
aaf8f9067a SPU2-X: Extra clamping. I think we used to have this and it was taken out to try to boost the reverb.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4774 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 17:48:59 +00:00
sudonim1@gmail.com
6b1136df4e SPU2-X: shifting some code around in the effects engine, any change in output is probably a bug.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4773 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 17:46:57 +00:00
ramapcsx2
3a0bf818ac That wasn't supposed to go on the svn :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4772 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 16:53:13 +00:00
sudonim1@gmail.com
367ab01a60 SPU2-X: We had two SPDIF modes reversed. I don't really understand the SPDIF modes but these are the bits the library sets. Fixes Gradius 3+4, issue 925.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4771 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 15:43:38 +00:00
sudonim1@gmail.com
8c781f9845 SPU2-X: More parens needed, always more!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4770 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 14:03:27 +00:00
sudonim1@gmail.com
27e9b57fed SPU2-X: Another error in the bitshifts, not sure if it's mine or older.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4769 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 14:01:33 +00:00
sudonim1@gmail.com
244f16c57a SPU2-X: Removed reference to x86emitter as we don't seem to use it any more (some brief optimisation experiment a while ago?)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4768 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 13:40:14 +00:00
ramapcsx2
b26f787e22 SPU2-X:
Removed the fake reverb since the real stuff started to work :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4767 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 13:24:22 +00:00
shadowladyngemu
4f89f21f99 GSdx: CRC hackixes for...
The Lord of the Rings: the Third Age (Removing fat stripes on screen).
Digimon Rumble Arena 2 (Half screen issue).
Star Wars - The Force Unleashed (Hiding HUD and 3d issues. Not perfect and NTSC-U only, not sure if it works with PAL).
Star Wars Battlefront 1/2 (Huge VRAM usage issue. NTSC-U only, not sure if it works with others).
Black Hawk Down - Team Sabre (Half screen issue and removes the night vision filter which was broken and using a lot of VRAM).

Minimal changes to other CRC hackfixes and GameDB.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4766 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 08:31:42 +00:00
sudonim1@gmail.com
2bb7704fbd SPU2-X: I was being silly, those -1s are unnecessary (I was thinking we were downcasting for some reason).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4765 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 02:08:51 +00:00
sudonim1@gmail.com
c22e933f5e SPU2-X: Tried to fix the incorrect bitshifts back from when Neill's code was optimised while the registers were broken so it wasn't testable. My maths is probably off, the code needs reviewing. The "- 1"s are so that -1 * -1 = just short of 1 instead of -1 (overflow).
With this, reverb maybe sounds somewhat like the PS2 for the first time ever!?

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4764 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 01:34:41 +00:00
sudonim1@gmail.com
43fba9aab8 SPU2-X: Oops, I'm the one who spotted this when we were discussing it too.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4763 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-25 00:12:31 +00:00
sudonim1@gmail.com
373c2cd47f SPU2-X: Reverted back to the last version of the reverb engine before the rewrite plus some backwards lerp fixes (accident in optimisation in r2089). Thanks to gigaherz (I guess? This is mostly your fault.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4762 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-24 23:55:19 +00:00
sudonim1@gmail.com
297843ddaf SPU2-X: Both cores now (ignore previous commit)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4761 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-24 23:09:45 +00:00
sudonim1@gmail.com
86763c806f SPU2-X: The reverb registers in the register pointer table are inconsistent with the register definitions, they have always been inconsistent, everything we have done to fix reverb was invalid because of this. Not sure where we go from here.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4760 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-24 22:46:53 +00:00
sudonim1@gmail.com
c509e2afb7 SPU2-X: Testing showed that writing effect area registers is not entirely ineffective as previously assumed while effect area writing is enabled on that core. The new assumption is that internal registers reflect the values of the external ones while effect area writing is disabled. Also increased logging level of these registers.
Save state compatibility broken.

Fixes issue 796, grandia 3 noise before squenix logo.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4759 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-24 18:41:56 +00:00
sudonim1@gmail.com
73b97e74d4 SPU2-X: If a bit we don't understand goes high, clear a register we don't understand. Don't ask me, but it seems to make the BIOS happier and Devil May Cry works again.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4758 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-23 20:14:01 +00:00
gregory.hainaut@gmail.com
d84a3de6fa onepad: support of diagonal in d-pad.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4757 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-23 06:56:06 +00:00
sudonim1@gmail.com
ddaea35d6e SPU2-X: Bump savestate version since I broke compatibility with r4754
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4756 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-22 11:49:49 +00:00
sudonim1@gmail.com
9e34391cde SPU2-X: Refix Zero: Akai Chou (and others fixed in r4735 probably). It was a slip in the dead voice code.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4755 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-22 11:42:56 +00:00
sudonim1@gmail.com
629a6826d2 SPU2-X: Quality fix (?): take crest value to mean the electronics definition and clamp modulated pitch to [0,0x3fff] on the basis that the SPU2 probably is incapable of decoding two words of samples for each voice in each tick. Honestly this is still guessing, we only really know that it was wrong.
Test FFX tone when it's your turn to act, FFX underwater music?, xenosaga movie skipping sound effect, god knows what else.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4754 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-22 02:27:39 +00:00
sudonim1@gmail.com
eba05e18c2 SPU2-X: Fix minor register logging bug (probably not the only bug in this code)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4753 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-22 00:04:00 +00:00
sudonim1@gmail.com
9dd3cf8078 SPU2-X: Improved (hopefully to perfection) the reporting of NAX by moving code around in the decoder. Fixes Magic Pengel, hopefully no regressions (but it does intentionally change when some IRQs fire a bit so there might be some, but if so this is a step towards fixing other finicky games).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4752 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-21 22:29:59 +00:00
gregory.hainaut@gmail.com
d968362961 cmake: * improve gtk hack to be compatible with previous cmake version.
* Add some number to the plugin .so file.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4751 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-20 18:09:32 +00:00
gregory.hainaut@gmail.com
f682a8337c onepad:
* fix forcefeedback. It works now, albeit it slow down the emulation...
* Add an option hack for ds3 usb drivers


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4750 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-19 16:13:41 +00:00
gregory.hainaut@gmail.com
d726be3364 onepad:
* test the reading of the configuration file (will be safer with the previous configuration format).
* bump the version


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4748 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-17 20:44:46 +00:00
ramapcsx2
f60012a209 SPU2-X: Version bump.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4747 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-16 16:59:48 +00:00
sudonim1@gmail.com
b16629acc9 SPU2-X: Change initial IRQA value, fixes F1 2005. This is a weird one, read the long comment.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4746 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-15 18:01:04 +00:00
sudonim1@gmail.com
86b80f2603 SPU2-X: Little mistake in input area IRQ code.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4745 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-15 16:24:42 +00:00
sudonim1@gmail.com
94d6aaf4bb SPU2-X: Flag effect area for updating on effect area register writes rather than core attributes change. (For change in testing. Committing separately for regression testing purposes.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4744 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-15 00:57:04 +00:00
ramapcsx2
61a7804b90 SPU2-X: Debugger was missing one digit of the IRQA, whops :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4743 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-14 22:12:45 +00:00
sudonim1@gmail.com
bcd2ceaa6c SPU2-X: Process input area regardless of ADMA status. Fixes Burnout, maybe others.
This is a guess, not confirmed by hardware testing, but seems logical.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4742 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-14 18:02:57 +00:00
sudonim1@gmail.com
c4196d542d SPU2-X: Change the dead voice read logic to match the live one. (Probably doesn't affect anything.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4741 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-14 15:54:04 +00:00
gregory.hainaut@gmail.com
106bfc73e5 codeblock: add gtk include file and remove some define
=> wx directly include one gtk include file directly and it seem to use also deprecated stuff ...


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4738 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-13 16:47:46 +00:00
gregory.hainaut@gmail.com
468463354c i18n: remove the loading of ter&dev mo. Upload latest mo align on lastest po (several new languages too)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4737 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-13 14:15:17 +00:00
gregory.hainaut@gmail.com
c6807d638c i18n: round 2, fix po and upload new version of pt_BR/pl_PL/es_ES/sv_SE
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4736 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-13 14:08:01 +00:00
sudonim1@gmail.com
4d92ef1f90 SPU2-X: Fixed old misunderstanding about the function of the loop bits and documented our findings and unverified suspicions.
Fixes Zero: Akai Chou, Tomb Raider: Legend, Tomb Raider: Anniversary, maybe others.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4735 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-13 00:00:58 +00:00
shadowladyngemu
6a364aa444 GSdx: Better hackfix for Dragon Ball Z Budokai Tenkaichi 3, missing body parts still happened sometimes. Thanks to miseru99 for the initial patch and testing.
zzogl-pg win: Patch by Kosmos in the forums, corrects a typo that was causing window size to appear as height x height instead of width x height in windows OS (was breaking fullscreen at it too). Thanks :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4734 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-12 22:07:59 +00:00
gregory.hainaut@gmail.com
9dd0cde92c i18n: backport po from 0.9.8 and merge ter&dev into main&ico.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4733 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-12 18:10:43 +00:00
gregory.hainaut@gmail.com
f42aa2a7ea zeropad: deprecate it in favor of onepad.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4732 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-12 14:58:40 +00:00
gregory.hainaut@gmail.com
35b9dfce3f pcsx2: zzogl:onepad: gsdx: merge linux-gsopen2 branch (4730) into trunk
* Gsopen2 support for GS plugins => Support of the PCSX2 GS window configuration panel. Support of all PCSX2 shortcut.
* new shortcut: shift-f12 to stole the input. ZZogl shortcut must be prefixed with ctrl
* onepad: Support/fix/improve of configuration gui, multiple key, mouse/wiimote for analog joystick, dualshock3/sixaxis (basic), dual pad and experimental forcefeedback

Note: it is advices to delete OnePAD.ini


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4731 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-12 14:48:36 +00:00
gregory.hainaut@gmail.com
0543f24466 debian:
* add a -local option for create tarball script (handy to avoid multiple re-dl)
* cherry pick some changes of micove ppa package


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4729 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-12 12:39:11 +00:00
sudonim1@gmail.com
ae004d5e58 SPU2-X: partial and probably incorrect (but good enough for the BIOS) support for reading back key on and key off registers, just returning the last written value.
We need testing to determine how these actually behave and want to do some game testing to find other partially implemented registers before that.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4727 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-11 19:24:49 +00:00
shadowladyngemu
9036280455 GSdx: No more blinking characters/objects when using EE/VU cycle speedhacks in God of War I :p (also maybe better fix for GoW2)
Added some NTSC-J CRCs found by users of 2ch.net. Thanx :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4726 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-11 17:50:47 +00:00
shadowladyngemu
4dab9c71c3 GSdx: No more blinking characters/objects when using EE/VU cycle speedhacks in God of War 2.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4723 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-11 09:04:05 +00:00
ramapcsx2
2e81d03624 SPU2-X: Fix for Fatal Frame as per sudo's findings.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4722 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-11 00:49:26 +00:00
sudonim1@gmail.com
555e9ee039 SPU2-X: Implemented SPU2reset method for handling a PS2 reset.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4721 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 20:30:57 +00:00
sudonim1@gmail.com
f423da573f SPU2-X: Completely removed the concept of core resets. We were unable to find any evidence supporting their existence.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4720 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 20:14:14 +00:00
sudonim1@gmail.com
6b2ba33dd9 SPU2-X: Missed a spot for the core mixup, noticed that we're not using our own MMIX value on init and removed MMIX fiddling from reset entirely due to lack of evidence.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4719 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 19:32:17 +00:00
sudonim1@gmail.com
cd6f4bc10b SPU2-X: fixed core mix up for effect area addresses and changed MMIX values on reset (which we're not not sure is an actual SPU2 feature)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4718 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 19:18:18 +00:00
sudonim1@gmail.com
73db84d024 SPU2-X: Revert the ENDX changes from r4700 as they weren't based on testing but confusing documentation.
SPU2-X: Found a crash on writing to the low word of the effects end address during testing.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4717 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 18:53:55 +00:00
ramapcsx2
3f450d3158 SPU2-X: Some visual debugger additions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4716 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-08 06:44:15 +00:00
gregory.hainaut@gmail.com
8b4f813d27 i18n: update the keyword metadata too...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4715 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-05 20:02:54 +00:00
gregory.hainaut@gmail.com
16b64c3cc1 i18n: fix issue i1037 (Rafael's patch).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4714 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-05 19:52:38 +00:00
cottonvibes
996ca8ffff microVU:
- Reimplemented mini/max opcodes using integer comparison operations instead of double comparison. This results in a bit less code and integer operations tend to be faster than double ops (especially on AMD cpus). Thanks to pseudonym for the idea!
- Fixed some minor bugs in mVU dev builds.

pcsx2:
- Added __fc as a shorthand macro for __fastcall since we already have __ri and __fi macros.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4713 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-05 10:30:04 +00:00
gregory.hainaut@gmail.com
daa5a00a98 3rdparty: remove the heavy (+90MBytes) SDL test directory. Completely useless and save us few minutes of download
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4712 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-05 09:57:49 +00:00
gregory.hainaut@gmail.com
e9183c87f0 cmake: do not compile removed pot files
i18n: forgot generate_pot.sh in previous commit


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4711 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-05 09:18:08 +00:00
gregory.hainaut@gmail.com
8cbe0d9296 i18n: new organization of translation in 2 sides: iconized and the others.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4710 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-04 15:54:11 +00:00
shadowladyngemu
d14f0169fa GSdx: CRC hackfix for Ty the Tasmanian Tiger. Couple CRCs added.
GameDB: Onimusha 4: Dawn of Dreams playable again with a patch. Minor other updates.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4706 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-03 09:03:28 +00:00
ramapcsx2
e853af0901 SPU2-X: There must be some other flag that goes with the FxEnable one ><
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4701 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-02 08:22:20 +00:00
ramapcsx2
2a95dadb73 SPU2-X: Changes to reflect results of tests on my PS2.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4700 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-06-02 08:12:40 +00:00
gigaherz
5f66e57ed1 SPU2-X Reverb: I put the mask in the wrong place.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4690 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 20:16:40 +00:00
gigaherz
ecc651ffe1 SPU2-X Reverb: Apparently some reverb presets use offsets outside of the ps2 memory ...
Rama asked me to note that it still doesn't sound right yet. I will try to figure out the reason later.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4688 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 17:52:03 +00:00
gigaherz
ea367e8326 SPU2-X Reverb: make the filter actually look the way a FIR filter is supposed to look.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4687 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 16:46:41 +00:00
gigaherz
881982229c SPU2-X Reverb: Echo/Delay effects don't work without this.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4684 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 16:24:18 +00:00
ramapcsx2
5509c9784a SPU2-X: Better reverb params logging.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4683 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 15:03:49 +00:00
gigaherz
b201cbb3b6 SPU2-X: Stop the ear-killing overflows by actually shifting the output as it was supposed to be shifted.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4682 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 14:47:30 +00:00
gigaherz
948de6d452 SPU2-X: Improved Real-Reverb engine algorithm.
Before trying this revision, make sure your speakers/headphones are not too loud.

I have been looking at it for a long while, and I decided it couldn't be just "somewhat similar" to a Schroeder Reverberator.
The SPU2 designers would have actually used a working design for a reverberator, so chances are they implemented Schroeder's.

I haven't had the chance to test this code in spu2-x, but the results in the "Impulse Response Analyzer" tool I coded specifically for this, are positive.

Some tweaks might be needed, because I'm not sure if Neill got the IIR part right or not.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4678 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-28 02:37:32 +00:00
sudonim1@gmail.com
9af8099569 Fix VS2010 compilation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4675 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-25 10:15:49 +00:00
sudonim1@gmail.com
e390feb909 Further to r4673 remove the jitprofiling.lib dependency when linking.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4674 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-25 09:15:39 +00:00
sudonim1@gmail.com
c2d55b53ba Removed vtune headers from the project and disabled profiler hooks in GSDx as we can't legally distribute these. To be re-enabled we'll have to find a way to do this without infringing on Intel's copyright.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4673 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-25 02:17:27 +00:00
sudonim1@gmail.com
ae31701a62 Reverted some of the deletions from r4669. I didn't think too hard about deleting pch files but these are not precompiled headers.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4672 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-25 02:09:36 +00:00
refraction
0b6c8eaed4 Altered changes and reuploaded, defines are inplace so parts can be switched off for bug testing.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4671 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-24 23:30:14 +00:00
sudonim1@gmail.com
1bb055bf10 Reverted r4667. We need to talk.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4670 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-24 21:52:58 +00:00
sudonim1@gmail.com
a7c93c75fb Remove some compiled files. Compilation may temporarily be broken in a trivial way (or might not), I don't currently have visual studio installed.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4669 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-24 21:47:52 +00:00
refraction
3c51d6655a EERec: Implemented some common cases of Load/Stores with shifts. Adds a bit of speed here and there.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4667 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-23 22:19:49 +00:00
gregory.hainaut@gmail.com
b5b32b4f53 cmake: ubuntu moves file and become incompatible with current cmake version...
For the moment I import cmake file and do a small fix.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4666 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-23 21:34:45 +00:00
ramapcsx2
c440b442ac SPU2-X:
Some work on the fake reverb. Renamed it to "Custom Reverb" and the original to "SPU2 Reverb".

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4665 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-23 17:14:56 +00:00
ramapcsx2
8e28873436 Small PCSX2 speedup due to less flushing in the eerec. Thanks pseudonym :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4663 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-22 16:01:09 +00:00
ramapcsx2
695b3ba900 SPU2-X:
- Replaced the reverb boost control with a selector for normal reverb or a new mode we call "fake reverb".
- This new mode (coded by gigaherz) is intended as an alternative for the only partially working "normal reverb".
- The new mode will have to be tuned yet to sound good.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4662 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-21 17:47:33 +00:00
ramapcsx2
149fcf9662 SPU2-X: Configuration for the output volume in the settings dialog. And it works, too! :P
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4661 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-21 13:44:10 +00:00
cottonvibes
633a31ccbc microVU: Fixed a bug I had in the handling of indirect jumps that are placed in a branch delay slot. This fixes the game "The Thing" and I think makes it playable although I didn't test it much.
Might fix problems in other games that were doing this too.
The bug was kind-of funny, it was an old line of code I had forgotten to delete xD

I also improved the console message for branch in branch delay slots to actually say the names of the branches.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4660 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-21 03:48:47 +00:00
shadowladyngemu
802be79bd6 GSdx: Small change to the small change to the Dragon Ball Z Budokai Tenkaichi 3 hackfix... space stage had blur still.
Commented out the Rez hackfix code, seems it's not needed anymore.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4659 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-21 02:53:15 +00:00
shadowladyngemu
7956cc6e42 GSdx: Small change to the Dragon Ball Z Budokai Tenkaichi 3 hackfix, no more flickering for the PAL version and no more missing/transparent body parts.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4658 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-20 22:29:25 +00:00
cottonvibes
daefeb1649 microVU: Fixed a bug in my handling of branch in branch-delay slots.
Fixes Hot Wheels Velocity Maximum Justice, and now makes the game playable with pcsx2 from what I can see :D
This revision might also fix other games that were still having problems that do branches in branch-delay slots.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4657 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-20 06:20:36 +00:00
avihal@gmail.com
1420318b04 GUI: BUGFIX: (Save)State in GS window title can get out of sync with actual current slot (after loading/saving state via the menu).
Details:
- It seems that due to legacy reasons, Lilypad is setting the current state at the GS window title, as a hack which is enabled by default (at Lilypad's main GUI tab). However, it's buggy because it only changes the display when (shift/)F2 is pressed, while the current slot actually also changes when loading/saving state via the PCSX2 main menu, so it can get out of sync (possibly with unpleasant results, especially when saving). Now it's disabled by default at Lilypad, and if enabled, displayed as "State(Lilypad)".

- PCSX2 itself now properly handles the current State slot at the GS title window.

Note: ZeroGS still changes its title independently (not via the "standard" PCSX2 mechanism) so Lilypad's title hack might still be useful for it. However, it's still buggy and can get still out of sync.

TODO: Remove this option completely from Lilypad because it's buggy? ZeroGS can still use it, but I think it can cause more harm than good. What do you think?

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4656 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-17 11:18:45 +00:00
gregory.hainaut@gmail.com
de826932e4 pcsx2 gui: better fit string into textbox on linux
* increase a min panel size (skip when turbo string)
* shorten ee cache string with a nice tooltip


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4654 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-15 14:02:36 +00:00
gregory.hainaut@gmail.com
372155ad05 onepad: Fix 2 bugs that renders hat unusable. Impact multi pad too (not tested this part).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4651 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-14 20:03:29 +00:00
gregory.hainaut@gmail.com
8702685f73 onepad: remember the pad selected (more user expected behavior)
cmake: CDVDiso need gtk2, remove fatal error for 64bits fedora users


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4649 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-14 11:03:02 +00:00
gregory.hainaut@gmail.com
6f9ad58cdf cmake: * properly detect 64 bits stuff...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4644 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-10 16:22:28 +00:00
ramapcsx2
47aeca4c75 GSdx:
Fallback to the old render target read for games that do block level reads (Gust titles).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4643 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-10 16:02:52 +00:00
gregory.hainaut@gmail.com
827dcfaf6f pcsx2: linux: take some margins for the height of font (avoid top/bottom cut)
cmake: 
* disable fomit-frame-pointer which cause crash with gcc-4.6 (it was not enabled by default but now I'm sure people will not enable it ;) )
* Try harder to pick the 32bits configuration for wx in a 64bits environment (opensuse/fedora).



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4641 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-10 09:26:39 +00:00
cottonvibes
96b2d810c1 microVU:
- Fix for falling through floor bug in MGS2 Demo Disc (not a proper fix but good enough for now)
- Fixed a few random tiny bugs; might not effect anything
- Coded some optimization that didn't workout well; its disabled by default, will probably remove the code later...


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4640 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-10 07:04:04 +00:00
ramapcsx2
e821070676 GSdx:
Fixed Busin 0: Wizardry and Chaos Legion in hardware rendering, possibly others (that read back the output) as well.
The fix could use a review though, as I'm not sure it's safe :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4639 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-09 22:14:35 +00:00
gregory.hainaut@gmail.com
6926e32466 cmake: fix a subtle bug which lead to a bad selection of wxwidget configuration. Impact fedora users
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4638 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-09 20:32:50 +00:00
ramapcsx2
b2ee693b25 GSdx:
New define "NO_CRC_HACKS", for testing how games work without hacks easily. 
Gets enabled together with the no cache define but can be toggled individually as well.

Also I've been told to mention that these changes are not directly benefiting the end user.
Gamers: This doesn't fix your DragonBall, okay? :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4636 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-09 16:45:54 +00:00
ramapcsx2
5785ba7914 GSdx:
- Allow filtering setting for native resolution hardware rendering, as it's not tied to the resolution.
- Add ST / UV coordinate tweaking defines to more easily debug small rendering glitches.
- Add a define to bypass the hardware renderer texture cache. With this enabled, speed drops to slower than software rendering.
It fixes nearly all hardware rendering issues though and can be used to see how games *would* look if we had a new cache ;)

Thanks for the help, sudonim :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4635 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-09 01:36:57 +00:00
refraction
cae7e38848 Adding another Simpsons CRC thanks to Jan-Henning Klasen on the facebook group!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4634 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-08 12:05:35 +00:00
shadowladyngemu
3153c4905d GSdx: Bit better hackfix for black, wasn't showing menus and the sniper scopes and also works for PAL 50 and progressive modes now.
Small change to the Metal Gear Solid 3 hackfix. Portraits in codec conversations show now without much of a performance hit, lemme know if this one breaks anything in the game.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4631 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-07 18:14:07 +00:00
shadowladyngemu
f039383a1b GSdx HW: CRC hackfix for "Black"
Minor updates to GameDB.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4630 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-07 01:59:18 +00:00
avihal@gmail.com
3523626462 GUI: when the config panel is open, and using keyboard shortcuts for frame-limiter (F4) or aspect-ratio (F6), reflect it at the GUI, but ONLY if there are no intermediate changes at the GUI (i.e., only if the "Apply" button is currently disabled). This would prevent re-applying obsolete values when clicking Apply/OK for for these two configs (after they were changed via KB while the GUI was open).
This is a very light infrastructure to allow some synchronization between KB shortcuts and the GUI. Currently only used for frame limiter and aspect ratio KB shortcuts. I wanted to also use it with frame-skipping (shift-F4), however, frame skipping GUI seem to have other issues which prevent it from properly reflecting KB modifications, so it's out for now.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4627 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-06 12:46:58 +00:00
avihal@gmail.com
03d288cc93 Configuration panel: bugfix: "Apply" button was enabled when the dialog opens. Now starts disabled, and only enabled after actual changes to the panel.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4626 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-06 06:21:46 +00:00
cottonvibes
a70fec55f7 microVU: Added some options in microVU_Misc.h to easily enable/disable certain mVU features to help in debugging problematic games...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4625 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-06 04:19:13 +00:00
refraction
d9d909849d Adjusted VSync to work more like the PS2 does it, also involves a small change which "might" sold some half screen issues. Fixed a couple of counter log bugs too (caused it to crash when EE Counter logs were enabled)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4624 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-05 22:22:45 +00:00
ramapcsx2
66ba9a07ce Gamefixes for Growlanser 2 and 3 that finally fix those randomly dieing videos.
These nice games should be playable at last.

Thanks to Lana for finding them! :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4623 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-05 14:58:07 +00:00
cottonvibes
9a3934af89 microVU: Fix for Red Faction 2
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4622 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-04 22:52:27 +00:00
shadowladyngemu
00132caca1 Disabling some console spam (actually just changing it to a dev logging spam :p) that was causing a huge slowdown in Star Trek Voyager - Elite Force.
GameDB: Few updates...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4620 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-04 11:53:24 +00:00
ramapcsx2
88cf49c2b6 SPU2-X:
Configurable output volume, ini only for now.
Can be set with "FinalVolume", from 0 to 100.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4619 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-04 11:01:43 +00:00
ramapcsx2
6ee229b141 Patch to GSdx capture that offers RGB mode. By patrickdinh.
Also added Valkyria Profile 2 Italy to the gamedb and GSdx crc list. By Leucos.
Thanks guys :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4618 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-02 21:04:33 +00:00
gregory.hainaut@gmail.com
763f21cfbc pcsx2 & spu2x: allow to compile[0] with lto on linux. It removes an useless wx feature on linux.
[0]: it needs gold linker, tuning parameter large-function-growth to 5000 and gcc-4.6.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4617 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-02 19:11:00 +00:00
gregory.hainaut@gmail.com
8ffb0d7a17 pcsx2 0.9.9 a new journey begin ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4616 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-02 18:59:32 +00:00
ramapcsx2
8d5165551e Remove a size check that prevented fps2bios to load.
Also enabling code comments again,
since the release is out now we can live with roo -1'in everything :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4614 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-05-02 02:02:46 +00:00
refraction
efe1e665ee Minor EE Cache emulation changes (No fixes)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4609 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-30 22:19:20 +00:00
refraction
e615fe1c08 Added GameFix for Transformers and Test Drive Unlimited to solve the slow booting issue, Test Drive is now playable at least :P. Also tidied up a small bit of VIF DIRECT/HL, no functional changes made.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4608 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-30 18:30:31 +00:00
gabest11
157c6ef432 GSdx: psx plugin works again, the removal of _aligned_realloc broke it when I was making it gcc compatible.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4604 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-30 00:31:35 +00:00
gregory.hainaut@gmail.com
033ecabcf2 zerospu2: fix an issue with gcc 4-6 (note some gcc 4.6 optimization breaks pcsx2...)
i18n: allow to translate a part of system default for the language selection.

Rational: In case system default is incorrect, we will still get an english part (with the unknow-language translation)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4603 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-29 21:02:31 +00:00
gregory.hainaut@gmail.com
db2f16b985 zzogl: Replace a function by a macro. fix gcc-4.6 issue.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4602 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-27 17:49:34 +00:00
shadowladyngemu
1cbc1ec7c1 GSdx: Some CRCs added, thanks to ikco10@nate.com for this :)
GameDB: Minor updates...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4599 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-26 11:14:26 +00:00
gabest11
4046b56031 GSdx: forgot about something...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4598 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-26 01:04:52 +00:00
gabest11
fd0245d365 GSdx: implemented the caching of the new page/tile map, dq8 should be fast again
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4597 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-26 00:56:54 +00:00
gabest11
e59670ff97 GSdx: trying another approach for r4589
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4596 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-25 18:18:21 +00:00
shadowladyngemu
eaaa8eef59 GSdx: CRC hackfixes for Silent Hill 2/3 (half screen issue), Castlevania (removes shadows which were broken and caused darkness in different areas) and Bleach Blade Battlers 1/2 (shadows that caused a huge slowdown when casted on the characters).
Few changes to the Simpsons hackfix.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4593 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-25 13:47:29 +00:00
gabest11
cc8d14511b GSdx: the texture cache fix discussed under r4589.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4592 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-25 01:44:00 +00:00
gregory.hainaut@gmail.com
7029f7aa98 GSdx: linux: polish window management.
1/ Allow a resize of the render zone.
2/ Do not update title in fullscreen which create some flashes


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4591 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-24 16:00:36 +00:00
ramapcsx2
6c41b01390 GSdx:
Document an issue with the texture mapping for "CLAMP_REPEAT" modes (possibly the others as well).
The problem causes displaced character portraits in Ar Tonelico 2.
http://simplest-image-hosting.net/jpg-0-clamp-repeat-bug
Review by Gabest would be nice ;)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4589 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-23 19:57:25 +00:00
gregory.hainaut@gmail.com
5335c64f12 spu2x: remove some definition (fix gcc-4.6)
gsdx: add a missing include (fix gcc-4.6). Force an init of sdl to allow in-emulation configuration


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4587 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-23 08:11:40 +00:00
shadowladyngemu
741b623b97 GSdx: CRC hackfixes for Red Dead Revolver, Heavy Metal Thunder, Spiderman Web of Shadows (if anybody cares about this one :p).
Also a few changes for Tekken 5, "City at sunset" stage, hopefully there's nothing else wrong with this game anymore.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4585 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-21 02:32:59 +00:00
avihal@gmail.com
39c8fe121a CDVD plugin submenu disable: code cleanup to allow easier future modifications.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4580 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-16 20:36:53 +00:00
avihal@gmail.com
8858a5c57c CDVD plugin submenu: now only enabled when "Plugin" is selected.
Hopefully allow less initial confusion (the CDVD plugin is not used by default and it will mostly stay that way, so disabled unless chosen).
Note: the Iso selector sub menu is always enabled because even when the Plugin is selected as source, selecting an ISO via the selector switches to the internal Iso reader.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4578 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-16 09:35:42 +00:00
ramapcsx2
0783f31f84 GSdx: Small mistake :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4576 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-15 17:12:22 +00:00
shadowladyngemu
9449b3db5b GSdx: Timesplitters 2 fix works with the NTSC version now too, shows the minimap.
CRC Hackfixes for Rez and Lord of the Rings - Two Towers.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4575 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-15 15:42:28 +00:00
gregory.hainaut@gmail.com
2abb0c0f1d spu2x: On linux uses by default the ALSA api when no inifile exists
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4574 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-14 20:59:00 +00:00
shadowladyngemu
f69e165b51 GSdx: CRC hackfix for Gran Turismo 3 and Gran Turismo Concept. Some of the race tracks had garbage all over the screen.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4573 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-14 15:12:06 +00:00
ramapcsx2
cfe376491e Patch by Firnis:
He wrote his own, faster replacement for std::vector and used it for the EE and IOP block managers.
This cuts down compiling time for some blocks from nearly 1 second to ~ 0.1 - 0.3 seconds.
With this shorter compiling time, audio and framerate should be more stable when changing levels in a game, for example.

Thanks a bunch, Firnis ;)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4572 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-13 16:32:47 +00:00
gregory.hainaut@gmail.com
0f3f204ba7 pcsx2 gui: support revision number in various place with cmake linux build
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4571 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-12 16:24:41 +00:00
shadowladyngemu
46dd600319 GSdx: CRC fix for Time Splitters 2 (PAL), seems the NTSC one is already doing a similar fix by default.
Also, reverting a whoopsie in my last commit :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4570 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-12 14:48:27 +00:00
shadowladyngemu
f3ca530043 GSdx: CRC Hackfixes for "Demon Stone" and "Big Mutha Truckers", removes postprocessing and "fixes" the green/purple screens.
Small change to the Crash Bandicoot hackfix.
GameDB: Minimal updates.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4569 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-12 14:11:03 +00:00
arcum42
e762f5eda8 onepad: various minor cleanups.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4565 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-10 00:09:17 +00:00
refraction
80e540c70b Partially removed partialqwc stuff from SPR. As the DMA ignore is no a gamefix this isn't required any more, also it broke Sega Superstar Tennis ;p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4564 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 20:21:09 +00:00
ramapcsx2
1bfd8cfd0c Small console message change.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4563 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 14:53:33 +00:00
shadowladyngemu
158a0c8c9c GSdx: Tekken 5's hackfix wasn't working with the sharp/progressive video modes, should look much better now when using them.
Also removed the effect in the burning temple stage which had thin lines over it when using high res.
GameDB: More updates ~_~

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4562 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 10:26:56 +00:00
gregory.hainaut@gmail.com
b51ac8d779 gsdx: add also a check of m_windows to play it self.
pcsx2: add a define to print the revision number with cmake


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4560 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 08:39:54 +00:00
arcum42
4bb717bab2 PADNull: Fix a bug that caused it to crash if a GS plugin using GSOpen2 was chosen under Linux.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4559 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 08:17:34 +00:00
arcum42
378a92b4c6 GSdx: Quick sanity check before creating a SDL window.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4558 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-04-09 06:28:28 +00:00
1173 changed files with 217509 additions and 99483 deletions

View File

@@ -14,15 +14,13 @@ set(CommonFlags
-msse2
-fvisibility=hidden
-pipe
-Wno-format
-Wno-unused-parameter
-Wno-unused-value
-Wunused-variable)
-w
)
# set warning flags
set(DebugFlags
-W
-g)
-g
)
# set optimization flags
set(OptimizationFlags
@@ -177,23 +175,23 @@ set(SDL_sources
"${SDL_ROOT}/src/joystick/SDL_sysjoystick.h"
#c/libm:
"${SDL_ROOT}/src/libm/e_atan2.c"
"${SDL_ROOT}/src/libm/e_log.c"
"${SDL_ROOT}/src/libm/e_pow.c"
"${SDL_ROOT}/src/libm/e_rem_pio2.c"
"${SDL_ROOT}/src/libm/e_sqrt.c"
"${SDL_ROOT}/src/libm/k_cos.c"
"${SDL_ROOT}/src/libm/k_rem_pio2.c"
"${SDL_ROOT}/src/libm/k_sin.c"
"${SDL_ROOT}/src/libm/math.h"
"${SDL_ROOT}/src/libm/math_private.h"
"${SDL_ROOT}/src/libm/s_atan.c"
"${SDL_ROOT}/src/libm/s_copysign.c"
"${SDL_ROOT}/src/libm/s_cos.c"
"${SDL_ROOT}/src/libm/s_fabs.c"
"${SDL_ROOT}/src/libm/s_floor.c"
"${SDL_ROOT}/src/libm/s_scalbn.c"
"${SDL_ROOT}/src/libm/s_sin.c"
#"${SDL_ROOT}/src/libm/e_atan2.c"
#"${SDL_ROOT}/src/libm/e_log.c"
#"${SDL_ROOT}/src/libm/e_pow.c"
#"${SDL_ROOT}/src/libm/e_rem_pio2.c"
#"${SDL_ROOT}/src/libm/e_sqrt.c"
#"${SDL_ROOT}/src/libm/k_cos.c"
#"${SDL_ROOT}/src/libm/k_rem_pio2.c"
#"${SDL_ROOT}/src/libm/k_sin.c"
#"${SDL_ROOT}/src/libm/math.h"
#"${SDL_ROOT}/src/libm/math_private.h"
#"${SDL_ROOT}/src/libm/s_atan.c"
#"${SDL_ROOT}/src/libm/s_copysign.c"
#"${SDL_ROOT}/src/libm/s_cos.c"
#"${SDL_ROOT}/src/libm/s_fabs.c"
#"${SDL_ROOT}/src/libm/s_floor.c"
#"${SDL_ROOT}/src/libm/s_scalbn.c"
#"${SDL_ROOT}/src/libm/s_sin.c"
#c/power:
"${SDL_ROOT}/src/power/SDL_power.c"
@@ -390,7 +388,26 @@ set(SDL_sources
#include_directories( ${SDL_ROOT}/include /usr/include/kde/artsc /usr/include/directfb)
add_library(${Output} STATIC ${SDL_sources} )
# Hiden option. It is only a temporary workaround of issue 1003. The purpose is to LD_PRELOAD
# the library so it avoid any conflict with previous SDL1.2 symbol
if (DEFINED SHARED_SDL)
add_library(${Output} SHARED ${SDL_sources} )
# Install the library with others plugins
if(PACKAGE_MODE)
install(TARGETS ${Output} DESTINATION ${PLUGIN_DIR})
else(PACKAGE_MODE)
install(TARGETS ${Output} DESTINATION ${CMAKE_SOURCE_DIR}/bin/plugins)
endif(PACKAGE_MODE)
else (DEFINED SHARED_SDL)
# Std build use static build
add_library(${Output} STATIC ${SDL_sources} )
endif (DEFINED SHARED_SDL)
# Gold (new linux linker) does not get automatically dependency of dependency so you must add
# them manually.
target_link_libraries(${Output} ${LIBC_LIBRARIES})
# User flags options
if(NOT USER_CMAKE_LD_FLAGS STREQUAL "")

View File

@@ -410,6 +410,9 @@ X11_GL_CreateContext(_THIS, SDL_Window * window)
_this->gl_config.major_version,
GLX_CONTEXT_MINOR_VERSION_ARB,
_this->gl_config.minor_version,
//FIXME GREGORY
// Request a debug context to ease opengl development
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,
0
};

View File

@@ -537,8 +537,12 @@ X11_GetWindowTitle(_THIS, Window xwindow)
0L, 8192L, False, data->UTF8_STRING, &real_type, &real_format,
&items_read, &items_left, &propdata);
if (status == Success) {
title = SDL_strdup(SDL_static_cast(char*, propdata));
XFree(propdata);
// Propdata can be null I do not know if it normal or not.
// At least handle gracefully and dont crash. -- Gregory
if (propdata) {
title = SDL_strdup(SDL_static_cast(char*, propdata));
XFree(propdata);
}
} else {
status = XGetWindowProperty(display, xwindow, XA_WM_NAME,
0L, 8192L, False, XA_STRING, &real_type, &real_format,

View File

@@ -1,3 +0,0 @@
handle SIGUSR1 pass noprint
handle SIGUSR2 pass noprint
break main

View File

@@ -1,8 +0,0 @@
The test programs in this directory tree are for demonstrating and
testing the functionality of the SDL library, and are placed in the
public domain.
October 28, 1997
--
Sam Lantinga (slouken@libsdl.org)

View File

@@ -1,227 +0,0 @@
# Makefile to build the SDL tests
srcdir = @srcdir@
CC = @CC@
EXE = @EXE@
CFLAGS = @CFLAGS@
LIBS = @LIBS@
TARGETS = \
checkkeys$(EXE) \
graywin$(EXE) \
loopwave$(EXE) \
testalpha$(EXE) \
testatomic$(EXE) \
testaudioinfo$(EXE) \
testbitmap$(EXE) \
testblitspeed$(EXE) \
testcursor$(EXE) \
testdraw2$(EXE) \
testdyngl$(EXE) \
testdyngles$(EXE) \
testerror$(EXE) \
testfile$(EXE) \
testfill$(EXE) \
testgesture$(EXE) \
testgl$(EXE) \
testgl2$(EXE) \
testgles$(EXE) \
testhaptic$(EXE) \
testrumble$(EXE) \
testhread$(EXE) \
testiconv$(EXE) \
testime$(EXE) \
testintersections$(EXE) \
testjoystick$(EXE) \
testkeys$(EXE) \
testloadso$(EXE) \
testlock$(EXE) \
testmultiaudio$(EXE) \
testoverlay$(EXE) \
testoverlay2$(EXE) \
testplatform$(EXE) \
testpower$(EXE) \
testresample$(EXE) \
testscale$(EXE) \
testsem$(EXE) \
testshader$(EXE) \
testshape$(EXE) \
testsprite$(EXE) \
testsprite2$(EXE) \
testspriteminimal$(EXE) \
teststreaming$(EXE) \
testtimer$(EXE) \
testver$(EXE) \
testvidinfo$(EXE) \
testwin$(EXE) \
testwm$(EXE) \
testwm2$(EXE) \
threadwin$(EXE) \
torturethread$(EXE) \
all: Makefile $(TARGETS)
Makefile: $(srcdir)/Makefile.in
$(SHELL) config.status $@
checkkeys$(EXE): $(srcdir)/checkkeys.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
graywin$(EXE): $(srcdir)/graywin.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
loopwave$(EXE): $(srcdir)/loopwave.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testresample$(EXE): $(srcdir)/testresample.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testaudioinfo$(EXE): $(srcdir)/testaudioinfo.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testmultiaudio$(EXE): $(srcdir)/testmultiaudio.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testalpha$(EXE): $(srcdir)/testalpha.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
testatomic$(EXE): $(srcdir)/testatomic.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testbitmap$(EXE): $(srcdir)/testbitmap.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testblitspeed$(EXE): $(srcdir)/testblitspeed.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testcursor$(EXE): $(srcdir)/testcursor.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testintersections$(EXE): $(srcdir)/testintersections.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testintersections.c $(srcdir)/common.c $(CFLAGS) $(LIBS)
testdraw2$(EXE): $(srcdir)/testdraw2.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testdraw2.c $(srcdir)/common.c $(CFLAGS) $(LIBS)
testdyngl$(EXE): $(srcdir)/testdyngl.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testdyngles$(EXE): $(srcdir)/testdyngles.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testerror$(EXE): $(srcdir)/testerror.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testfile$(EXE): $(srcdir)/testfile.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testfill$(EXE): $(srcdir)/testfill.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testgesture$(EXE): $(srcdir)/testgesture.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
testgl$(EXE): $(srcdir)/testgl.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
testgl2$(EXE): $(srcdir)/testgl2.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testgl2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
testgles$(EXE): $(srcdir)/testgles.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testgles.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
testhaptic$(EXE): $(srcdir)/testhaptic.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testrumble$(EXE): $(srcdir)/testrumble.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testhread$(EXE): $(srcdir)/testhread.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testiconv$(EXE): $(srcdir)/testiconv.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testime$(EXE): $(srcdir)/testime.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @SDL_TTF_LIB@
testjoystick$(EXE): $(srcdir)/testjoystick.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testkeys$(EXE): $(srcdir)/testkeys.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testloadso$(EXE): $(srcdir)/testloadso.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testlock$(EXE): $(srcdir)/testlock.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testoverlay2$(EXE): $(srcdir)/testoverlay2.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testoverlay$(EXE): $(srcdir)/testoverlay.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testplatform$(EXE): $(srcdir)/testplatform.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testpower$(EXE): $(srcdir)/testpower.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testscale$(EXE): $(srcdir)/testscale.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testscale.c $(srcdir)/common.c $(CFLAGS) $(LIBS)
testsem$(EXE): $(srcdir)/testsem.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testshader$(EXE): $(srcdir)/testshader.c
$(CC) -o $@ $(srcdir)/testshader.c $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
testshape$(EXE): $(srcdir)/testshape.c
$(CC) -o $@ $? -std=c99 $(CFLAGS) $(LIBS)
testsprite$(EXE): $(srcdir)/testsprite.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
testsprite2$(EXE): $(srcdir)/testsprite2.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testsprite2.c $(srcdir)/common.c $(CFLAGS) $(LIBS) @MATHLIB@
testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
teststreaming$(EXE): $(srcdir)/teststreaming.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
testtimer$(EXE): $(srcdir)/testtimer.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testver$(EXE): $(srcdir)/testver.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testvidinfo$(EXE): $(srcdir)/testvidinfo.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testwin$(EXE): $(srcdir)/testwin.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testwm$(EXE): $(srcdir)/testwm.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
testwm2$(EXE): $(srcdir)/testwm2.c $(srcdir)/common.c
$(CC) -o $@ $(srcdir)/testwm2.c $(srcdir)/common.c $(CFLAGS) $(LIBS)
threadwin$(EXE): $(srcdir)/threadwin.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
torturethread$(EXE): $(srcdir)/torturethread.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
clean:
rm -f $(TARGETS)
distclean: clean
rm -f Makefile
rm -f config.status config.cache config.log
rm -rf $(srcdir)/autom4te*

View File

@@ -1,41 +0,0 @@
These are test programs for the SDL library:
checkkeys Watch the key events to check the keyboard
graywin Display a gray gradient and center mouse on spacebar
loopwave Audio test -- loop playing a WAV file
testalpha Display an alpha faded icon -- paint with mouse
testaudioinfo Lists audio device capabilities
testbitmap Test displaying 1-bit bitmaps
testblitspeed Tests performance of SDL's blitters and converters.
testcdrom Sample audio CD control program
testcursor Tests custom mouse cursor
testdyngl Tests dynamically loading OpenGL library
testerror Tests multi-threaded error handling
testfile Tests RWops layer
testgamma Tests video device gamma ramp
testgl A very simple example of using OpenGL with SDL
testgl2 An even simpler example using the SDL 1.3 API
testhread Hacked up test of multi-threading
testiconv Tests international string conversion
testjoystick List joysticks and watch joystick events
testkeys List the available keyboard keys
testloadso Tests the loadable library layer
testlock Hacked up test of multi-threading and locking
testmultiaudio Tests using several audio devices
testoverlay Tests the software/hardware overlay functionality.
testoverlay2 Tests the overlay flickering/scaling during playback.
testpalette Tests palette color cycling
testplatform Tests types, endianness and cpu capabilities
testsem Tests SDL's semaphore implementation
testshape Tests shaped windows
testsprite Example of fast sprite movement on the screen
testsprite2 Improved version of testsprite
testtimer Test the timer facilities
testver Check the version and dynamic loading and endianness
testvidinfo Show the pixel format of the display and perfom the benchmark
testwin Display a BMP image at various depths
testwm Test window manager -- title, icon, events
testwm2 Improved version of testwm
threadwin Test multi-threaded event handling
torturethread Simple test for thread creation/destruction

View File

@@ -1,181 +0,0 @@
# Configure paths for SDL
# Sam Lantinga 9/21/99
# stolen from Manish Singh
# stolen back from Frank Belew
# stolen from Manish Singh
# Shamelessly stolen from Owen Taylor
dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
dnl
AC_DEFUN([AM_PATH_SDL],
[dnl
dnl Get the cflags and libraries from the sdl-config script
dnl
AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
sdl_prefix="$withval", sdl_prefix="")
AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
sdl_exec_prefix="$withval", sdl_exec_prefix="")
AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
, enable_sdltest=yes)
if test x$sdl_exec_prefix != x ; then
sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
if test x${SDL_CONFIG+set} != xset ; then
SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
fi
fi
if test x$sdl_prefix != x ; then
sdl_args="$sdl_args --prefix=$sdl_prefix"
if test x${SDL_CONFIG+set} != xset ; then
SDL_CONFIG=$sdl_prefix/bin/sdl-config
fi
fi
if test "x$prefix" != xNONE; then
PATH="$prefix/bin:$prefix/usr/bin:$PATH"
fi
AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
min_sdl_version=ifelse([$1], ,0.11.0,$1)
AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
no_sdl=""
if test "$SDL_CONFIG" = "no" ; then
no_sdl=yes
else
SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_sdltest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_CXXFLAGS="$CXXFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $SDL_CFLAGS"
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
dnl
dnl Now check if the installed SDL is sufficiently new. (Also sanity
dnl checks the results of sdl-config to some extent
dnl
rm -f conf.sdltest
AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SDL.h"
char*
my_strdup (char *str)
{
char *new_str;
if (str)
{
new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
else
new_str = NULL;
return new_str;
}
int main (int argc, char *argv[])
{
int major, minor, micro;
char *tmp_version;
/* This hangs on some systems (?)
system ("touch conf.sdltest");
*/
{ FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
/* HP/UX 9 (%@#!) writes to sscanf strings */
tmp_version = my_strdup("$min_sdl_version");
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_sdl_version");
exit(1);
}
if (($sdl_major_version > major) ||
(($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
(($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
printf("*** best to upgrade to the required version.\n");
printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
printf("*** to point to the correct copy of sdl-config, and remove the file\n");
printf("*** config.cache before re-running configure\n");
return 1;
}
}
],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_sdl" = x ; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$SDL_CONFIG" = "no" ; then
echo "*** The sdl-config script installed by SDL could not be found"
echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the SDL_CONFIG environment variable to the"
echo "*** full path to sdl-config."
else
if test -f conf.sdltest ; then
:
else
echo "*** Could not run SDL test program, checking why..."
CFLAGS="$CFLAGS $SDL_CFLAGS"
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
AC_TRY_LINK([
#include <stdio.h>
#include "SDL.h"
int main(int argc, char *argv[])
{ return 0; }
#undef main
#define main K_and_R_C_main
], [ return 0; ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding SDL or finding the wrong"
echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means SDL was incorrectly installed"
echo "*** or that you have moved SDL since it was installed. In the latter case, you"
echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
SDL_CFLAGS=""
SDL_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(SDL_CFLAGS)
AC_SUBST(SDL_LIBS)
rm -f conf.sdltest
])

View File

@@ -1,181 +0,0 @@
# Configure paths for SDL
# Sam Lantinga 9/21/99
# stolen from Manish Singh
# stolen back from Frank Belew
# stolen from Manish Singh
# Shamelessly stolen from Owen Taylor
dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
dnl
AC_DEFUN([AM_PATH_SDL],
[dnl
dnl Get the cflags and libraries from the sdl-config script
dnl
AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
sdl_prefix="$withval", sdl_prefix="")
AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
sdl_exec_prefix="$withval", sdl_exec_prefix="")
AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
, enable_sdltest=yes)
if test x$sdl_exec_prefix != x ; then
sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
if test x${SDL_CONFIG+set} != xset ; then
SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
fi
fi
if test x$sdl_prefix != x ; then
sdl_args="$sdl_args --prefix=$sdl_prefix"
if test x${SDL_CONFIG+set} != xset ; then
SDL_CONFIG=$sdl_prefix/bin/sdl-config
fi
fi
if test "x$prefix" != xNONE; then
PATH="$prefix/bin:$prefix/usr/bin:$PATH"
fi
AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
min_sdl_version=ifelse([$1], ,0.11.0,$1)
AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
no_sdl=""
if test "$SDL_CONFIG" = "no" ; then
no_sdl=yes
else
SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_sdltest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_CXXFLAGS="$CXXFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $SDL_CFLAGS"
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
dnl
dnl Now check if the installed SDL is sufficiently new. (Also sanity
dnl checks the results of sdl-config to some extent
dnl
rm -f conf.sdltest
AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SDL.h"
char*
my_strdup (char *str)
{
char *new_str;
if (str)
{
new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
else
new_str = NULL;
return new_str;
}
int main (int argc, char *argv[])
{
int major, minor, micro;
char *tmp_version;
/* This hangs on some systems (?)
system ("touch conf.sdltest");
*/
{ FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
/* HP/UX 9 (%@#!) writes to sscanf strings */
tmp_version = my_strdup("$min_sdl_version");
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_sdl_version");
exit(1);
}
if (($sdl_major_version > major) ||
(($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
(($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
printf("*** best to upgrade to the required version.\n");
printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
printf("*** to point to the correct copy of sdl-config, and remove the file\n");
printf("*** config.cache before re-running configure\n");
return 1;
}
}
],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_sdl" = x ; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$SDL_CONFIG" = "no" ; then
echo "*** The sdl-config script installed by SDL could not be found"
echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the SDL_CONFIG environment variable to the"
echo "*** full path to sdl-config."
else
if test -f conf.sdltest ; then
:
else
echo "*** Could not run SDL test program, checking why..."
CFLAGS="$CFLAGS $SDL_CFLAGS"
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
AC_TRY_LINK([
#include <stdio.h>
#include "SDL.h"
int main(int argc, char *argv[])
{ return 0; }
#undef main
#define main K_and_R_C_main
], [ return 0; ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding SDL or finding the wrong"
echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means SDL was incorrectly installed"
echo "*** or that you have moved SDL since it was installed. In the latter case, you"
echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
SDL_CFLAGS=""
SDL_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(SDL_CFLAGS)
AC_SUBST(SDL_LIBS)
rm -f conf.sdltest
])

View File

@@ -1,12 +0,0 @@
#!/bin/sh
#
# Regenerate configuration files
cp acinclude.m4 aclocal.m4
found=false
for autoconf in autoconf autoconf259 autoconf-2.59
do if which $autoconf >/dev/null 2>&1; then $autoconf && found=true; break; fi
done
if test x$found = xfalse; then
echo "Couldn't find autoconf, aborting"
exit 1
fi

View File

@@ -1,60 +0,0 @@
CFLAGS := -W -Wall -Wextra -g `sdl-config --cflags` -DSDL_NO_COMPAT
LDFLAGS := `sdl-config --libs`
# If it doesn't pick up defaults
#CFLAGS := -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include/SDL
#LDFLAGS := -lm -ldl -lesd -lpthread
SRC := testsdl.c \
platform/platform.c \
rect/rect.c \
surface/surface.c \
render/render.c \
audio/audio.c
COMMON_SRC := SDL_at.c common/common.c
COMMON_INCLUDE := SDL_at.h
RWOPS_SRC := rwops/rwops.c rwops/TestSupportRWops_Generic.c
TESTS_ALL := testsdl \
platform/platform \
rwops/rwops \
rect/rect \
surface/surface \
render/render \
audio/audio
.PHONY: all clean test
all: $(TESTS_ALL)
test: all
@./testsdl
testsdl: $(SRC) $(RWOPS_SRC) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(RWOPS_SRC) $(COMMON_SRC)
platform/platform: platform/platform.c $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ platform/platform.c $(COMMON_SRC) -DTEST_STANDALONE
rwops/rwops: $(RWOPS_SRC) $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(RWOPS_SRC) $(COMMON_SRC) -DTEST_STANDALONE
rect/rect: rect/rect.c $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ rect/rect.c $(COMMON_SRC) -DTEST_STANDALONE
surface/surface: surface/surface.c $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ surface/surface.c $(COMMON_SRC) -DTEST_STANDALONE
render/render: render/render.c $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ render/render.c $(COMMON_SRC) -DTEST_STANDALONE
audio/audio: audio/audio.c $(COMMON_INCLUDE) $(COMMON_SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ audio/audio.c $(COMMON_SRC) -DTEST_STANDALONE
clean:
$(RM) $(TESTS_ALL)

View File

@@ -1,59 +0,0 @@
SDL Automated Testing Framework User Documentation
by Edgar Simo Serra
Abstract
The SDL Automated Testing Framework, hereby after called SDL_AT, is a meant
to test the SDL code for regressions and other possible failures. It can also
be used to display what your SDL set up supports.
Basics
The main way to use the framework is to compile it and run it, that can be
done with the following command:
$> make test
It should then display something like:
Platform : All tests successful (2)
SDL_RWops : All tests successful (5)
SDL_Surface : All tests successful (6)
Rendering with x11 driver : All tests successful (4)
Indicating that all tests were successful. If however a test fails output it
will report the failure to stderr indicating where and why it happened. This
output can then be sent to the developers so they can attempt to fix the
problem.
Advanced
By passing the "-h" or "--help" parameter to testsdl you can get an overview
of all the possible options you can set to furthur tweak the testing. A sample
of the options would be the following:
Usage: ./testsdl [OPTIONS]
Options are:
-m, --manual enables tests that require user interaction
--noplatform do not run the platform tests
--norwops do not run the rwops tests
--nosurface do not run the surface tests
--norender do not run the render tests
-v, --verbose increases verbosity level by 1 for each -v
-q, --quiet only displays errors
-h, --help display this message and exit
Developers
See SDL_at.h for developer information.

View File

@@ -1,331 +0,0 @@
/*
* Common code for automated test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL_at.h"
#include "SDL_stdinc.h"
#include "SDL_error.h"
#include <stdio.h> /* printf/fprintf */
#include <stdarg.h> /* va_list */
/*
* Internal usage SDL_AT variables.
*/
static char *at_suite_msg = NULL; /**< Testsuite message. */
static char *at_test_msg = NULL; /**< Testcase message. */
static int at_success = 0; /**< Number of successful testcases. */
static int at_failure = 0; /**< Number of failed testcases. */
/*
* Global properties.
*/
static int at_verbose = 0; /**< Verbosity. */
static int at_quiet = 0; /**< Quietness. */
/*
* Prototypes.
*/
static void SDL_ATcleanup (void);
static void SDL_ATendWith( int success );
static void SDL_ATassertFailed( const char *msg );
/**
* @brief Cleans up the automated testsuite state.
*/
static void SDL_ATcleanup (void)
{
if (at_suite_msg != NULL)
SDL_free(at_suite_msg);
at_suite_msg = NULL;
if (at_test_msg != NULL)
SDL_free(at_test_msg);
at_test_msg = NULL;
at_success = 0;
at_failure = 0;
}
/**
* @brief Begin testsuite.
*/
void SDL_ATinit( const char *suite )
{
/* Do not open twice. */
if (at_suite_msg) {
SDL_ATprintErr( "AT suite '%s' not closed before opening suite '%s'\n",
at_suite_msg, suite );
}
/* Must have a name. */
if (suite == NULL) {
SDL_ATprintErr( "AT testsuite does not have a name.\n");
}
SDL_ATcleanup();
at_suite_msg = SDL_strdup(suite);
/* Verbose message. */
SDL_ATprintVerbose( 2, "--+---> Started Test Suite '%s'\n", at_suite_msg );
}
/**
* @brief Finish testsuite.
*/
int SDL_ATfinish (void)
{
int failed;
/* Make sure initialized. */
if (at_suite_msg == NULL) {
SDL_ATprintErr("Ended testcase without initializing.\n");
return 1;
}
/* Finished without closing testcase. */
if (at_test_msg) {
SDL_ATprintErr( "AT suite '%s' finished without closing testcase '%s'\n",
at_suite_msg, at_test_msg );
}
/* Verbose message. */
SDL_ATprintVerbose( 2, "<-+---- Finished Test Suite '%s'\n", at_suite_msg );
/* Display message if verbose on failed. */
failed = at_failure;
if (at_failure > 0) {
SDL_ATprintErr( "%s : Failed %d out of %d testcases!\n",
at_suite_msg, at_failure, at_failure+at_success );
}
else {
SDL_ATprint( "%s : All tests successful (%d)\n",
at_suite_msg, at_success );
}
/* Clean up. */
SDL_ATcleanup();
/* Return failed. */
return failed;
}
/**
* @brief Sets a property.
*/
void SDL_ATseti( int property, int value )
{
switch (property) {
case SDL_AT_VERBOSE:
at_verbose = value;
break;
case SDL_AT_QUIET:
at_quiet = value;
break;
}
}
/**
* @brief Gets a property.
*/
void SDL_ATgeti( int property, int *value )
{
switch (property) {
case SDL_AT_VERBOSE:
*value = at_verbose;
break;
case SDL_AT_QUIET:
*value = at_quiet;
break;
}
}
/**
* @brief Begin testcase.
*/
void SDL_ATbegin( const char *testcase )
{
/* Do not open twice. */
if (at_test_msg) {
SDL_ATprintErr( "AT testcase '%s' not closed before opening testcase '%s'\n",
at_test_msg, testcase );
}
/* Must have a name. */
if (testcase == NULL) {
SDL_ATprintErr( "AT testcase does not have a name.\n");
}
at_test_msg = SDL_strdup(testcase);
/* Verbose message. */
SDL_ATprintVerbose( 2, " +---> StartedTest Case '%s'\n", testcase );
}
/**
* @brief Ends the testcase with a succes or failure.
*/
static void SDL_ATendWith( int success )
{
/* Make sure initialized. */
if (at_test_msg == NULL) {
SDL_ATprintErr("Ended testcase without initializing.\n");
return;
}
/* Mark as success or failure. */
if (success)
at_success++;
else
at_failure++;
/* Verbose message. */
SDL_ATprintVerbose( 2, " +---- Finished Test Case '%s'\n", at_test_msg );
/* Clean up. */
if (at_test_msg != NULL)
SDL_free(at_test_msg);
at_test_msg = NULL;
}
/**
* @brief Display failed assert message.
*/
static void SDL_ATassertFailed( const char *msg )
{
/* Print. */
SDL_ATprintErr( "Assert Failed!\n" );
SDL_ATprintErr( " %s\n", msg );
SDL_ATprintErr( " Test Case '%s'\n", at_test_msg );
SDL_ATprintErr( " Test Suite '%s'\n", at_suite_msg );
SDL_ATprintErr( " Last SDL error '%s'\n", SDL_GetError() );
/* End. */
SDL_ATendWith(0);
}
/**
* @brief Testcase test.
*/
int SDL_ATassert( const char *msg, int condition )
{
/* Condition failed. */
if (!condition) {
/* Failed message. */
SDL_ATassertFailed(msg);
}
return !condition;
}
/**
* @brief Testcase test.
*/
int SDL_ATvassert( int condition, const char *msg, ... )
{
va_list args;
char buf[256];
/* Condition failed. */
if (!condition) {
/* Get message. */
va_start( args, msg );
SDL_vsnprintf( buf, sizeof(buf), msg, args );
va_end( args );
/* Failed message. */
SDL_ATassertFailed( buf );
}
return !condition;
}
/**
* @brief End testcase.
*/
void SDL_ATend (void)
{
SDL_ATendWith(1);
}
/**
* @brief Displays an error.
*/
int SDL_ATprintErr( const char *msg, ... )
{
va_list ap;
int ret;
/* Make sure there is something to print. */
if (msg == NULL)
return 0;
else {
va_start(ap, msg);
ret = vfprintf( stderr, msg, ap );
va_end(ap);
}
return ret;
}
/**
* @brief Displays a message.
*/
int SDL_ATprint( const char *msg, ... )
{
va_list ap;
int ret;
/* Only print if not quiet. */
if (at_quiet)
return 0;
/* Make sure there is something to print. */
if (msg == NULL)
return 0;
else {
va_start(ap, msg);
ret = vfprintf( stdout, msg, ap );
va_end(ap);
}
return ret;
}
/**
* @brief Displays a verbose message.
*/
int SDL_ATprintVerbose( int level, const char *msg, ... )
{
va_list ap;
int ret;
/* Only print if not quiet. */
if (at_quiet || (at_verbose < level))
return 0;
/* Make sure there is something to print. */
if (msg == NULL)
return 0;
else {
va_start(ap, msg);
ret = vfprintf( stdout, msg, ap );
va_end(ap);
}
return ret;
}

View File

@@ -1,158 +0,0 @@
/*
* Common code for automated test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
/**
* @file SDL_at.h
*
* @brief Handles automatic testing functionality.
*
* The basic approach with SDL_AT is to divide the tests into what are called
* test suites and test cases. Each test suite should have multiple test
* cases, each test case can have multiple asserts.
*
* To actually test for conditions within the testcase you check asserts, if
* the asserts fail the failures will be logged in the testsuite and
* displayed.
*
* Syntax is similar to OpenGL. An example would be:
*
* @code
* int f; // Number failed
* SDL_ATinit( "My testsuite" );
*
* SDL_ATbegin( "My first testcase" );
* if (!SDL_ATassert( (1+1)==2, "Trying '1+1=2'."))
* return; // Implicitly calls SDL_ATend if assert fails
* SDL_ATend(); // Finish testcase
*
* SDL_ATbegin( "My second testcase" );
* if (!SDL_ATassert( (4/2)==2, "Trying '4/2=2'."))
* return; // Implicitly calls SDL_ATend if assert fails
* SDL_ATend(); // Finish testcase
*
* f = SDL_ATfinish();
* @endcode
*
* @author Edgar Simo "bobbens"
*/
#ifndef _SDL_AT_H
# define _SDL_AT_H
enum {
SDL_AT_VERBOSE, /**< Sets the verbose level. */
SDL_AT_QUIET /**< Sets quietness. */
};
/*
* Suite level actions.
*/
/**
* @brief Starts the testsuite.
*
* @param suite Name of the suite to start testing.
*/
void SDL_ATinit( const char *suite );
/**
* @brief Finishes the testsuite printing out global results if verbose.
*
* @return 0 if no errors occurred, otherwise number of failures.
*/
int SDL_ATfinish (void);
/**
* @brief Sets a global property value.
*
* @param property Property to set.
* @param value Value to set property to.
*/
void SDL_ATseti( int property, int value );
/**
* @brief Gets a global property value.
*
* @param property Property to get.
* @param[out] value Value of the property.
*/
void SDL_ATgeti( int property, int *value );
/*
* Testcase level actions.
*/
/**
* @brief Begins a testcase.
*
* @param testcase Name of the testcase to begin.
*/
void SDL_ATbegin( const char *testcase );
/**
* @brief Checks a condition in the testcase.
*
* Will automatically call SDL_ATend if the condition isn't met.
*
* @param condition Condition to make sure is true.
* @param msg Message to display for failure.
* @return Returns 1 if the condition isn't met.
*/
int SDL_ATassert( const char *msg, int condition );
/**
* @brief Checks a condition in the testcase.
*
* Will automatically call SDL_ATend if the condition isn't met.
*
* @param condition Condition to make sure is true.
* @param msg Message to display for failure with printf style formatting.
* @return Returns 1 if the condition isn't met.
*/
int SDL_ATvassert( int condition, const char *msg, ... );
/**
* @brief Ends a testcase.
*/
void SDL_ATend (void);
/*
* Misc functions.
*/
/**
* @brief Prints an error.
*
* @param msg printf formatted string to display.
* @return Number of character printed.
*/
int SDL_ATprintErr( const char *msg, ... );
/**
* @brief Prints some text.
*
* @param msg printf formatted string to display.
* @return Number of character printed.
*/
int SDL_ATprint( const char *msg, ... );
/**
* @brief Prints some verbose text.
*
* Verbosity levels are as follows:
*
* - 0 standard stdout, enabled by default
* - 1 additional information
* - 2 detailed information (spammy)
*
* @param level Level of verbosity to print at.
* @param msg printf formatted string to display.
* @return Number of character printed.
*/
int SDL_ATprintVerbose( int level, const char *msg, ... );
#endif /* _SDL_AT_H */

View File

@@ -1,89 +0,0 @@
/**
* Automated SDL_RWops test.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "../SDL_at.h"
/**
* @brief Prints available devices.
*/
static int audio_printDevices( int iscapture )
{
int i, n;
/* Get number of devices. */
n = SDL_GetNumAudioDevices(iscapture);
SDL_ATprintVerbose( 1, "%d %s Audio Devices\n",
n, iscapture ? "Capture" : "Output" );
/* List devices. */
for (i=0; i<n; i++) {
SDL_ATprintVerbose( 1, " %d) %s\n", i+1, SDL_GetAudioDeviceName( i, iscapture ) );
}
return 0;
}
/**
* @brief Makes sure parameters work properly.
*/
static void audio_testOpen (void)
{
int i, n;
int ret;
/* Begin testcase. */
SDL_ATbegin( "Audio Open" );
/* List drivers. */
n = SDL_GetNumAudioDrivers();
SDL_ATprintVerbose( 1, "%d Audio Drivers\n", n );
for (i=0; i<n; i++) {
SDL_ATprintVerbose( 1, " %s\n", SDL_GetAudioDriver(i) );
}
/* Start SDL. */
ret = SDL_Init( SDL_INIT_AUDIO );
if (SDL_ATvassert( ret==0, "SDL_Init( SDL_INIT_AUDIO ): %s", SDL_GetError()))
return;
/* Print devices. */
SDL_ATprintVerbose( 1, "Using Audio Driver '%s'\n", SDL_GetCurrentAudioDriver() );
audio_printDevices(0);
audio_printDevices(1);
/* Quit SDL. */
SDL_Quit();
/* End testcase. */
SDL_ATend();
}
/**
* @brief Entry point.
*/
#ifdef TEST_STANDALONE
int main( int argc, const char *argv[] )
{
(void) argc;
(void) argv;
#else /* TEST_STANDALONE */
int test_audio (void)
{
#endif /* TEST_STANDALONE */
SDL_ATinit( "SDL_Audio" );
audio_testOpen();
return SDL_ATfinish();
}

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_AUDIO
# define _TEST_AUDIO
int test_audio (void);
#endif /* _TEST_AUDIO */

View File

@@ -1,110 +0,0 @@
/**
* Automated SDL_Surface test.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "../SDL_at.h"
#include "common.h"
/**
* @brief Compares a surface and a surface image for equality.
*/
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error )
{
int ret;
int i,j;
int bpp;
Uint8 *p, *pd;
/* Make sure size is the same. */
if ((sur->w != img->width) || (sur->h != img->height))
return -1;
SDL_LockSurface( sur );
ret = 0;
bpp = sur->format->BytesPerPixel;
/* Compare image - should be same format. */
for (j=0; j<sur->h; j++) {
for (i=0; i<sur->w; i++) {
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
switch (bpp) {
case 1:
case 2:
case 3:
ret += 1;
/*printf("%d BPP not supported yet.\n",bpp);*/
break;
case 4:
{
int dist = 0;
Uint8 R, G, B, A;
SDL_GetRGBA(*(Uint32*)p, sur->format, &R, &G, &B, &A);
if (img->bytes_per_pixel == 3) {
dist += (R-pd[0])*(R-pd[0]);
dist += (G-pd[1])*(G-pd[1]);
dist += (B-pd[2])*(B-pd[2]);
} else {
dist += (R-pd[0])*(R-pd[0]);
dist += (G-pd[1])*(G-pd[1]);
dist += (B-pd[2])*(B-pd[2]);
dist += (A-pd[3])*(A-pd[3]);
}
/* Allow some difference in blending accuracy */
if (dist > allowable_error) {
/*printf("pixel %d,%d varies by %d\n", i, j, dist);*/
++ret;
}
}
break;
}
}
}
SDL_UnlockSurface( sur );
if (ret) {
SDL_SaveBMP(sur, "fail.bmp");
SDL_LockSurface( sur );
bpp = sur->format->BytesPerPixel;
if (bpp == 4) {
for (j=0; j<sur->h; j++) {
for (i=0; i<sur->w; i++) {
Uint8 R, G, B, A;
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
R = pd[0];
G = pd[1];
B = pd[2];
if (img->bytes_per_pixel == 4) {
A = pd[3];
} else {
A = 0;
}
*(Uint32*)p = (A << 24) | (R << 16) | (G << 8) | B;
}
}
}
SDL_UnlockSurface( sur );
SDL_SaveBMP(sur, "good.bmp");
}
return ret;
}

View File

@@ -1,42 +0,0 @@
/**
* Automated SDL test common framework.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef COMMON_H
# define COMMON_H
# define FORMAT SDL_PIXELFORMAT_ARGB8888
# define AMASK 0xff000000 /**< Alpha bit mask. */
# define RMASK 0x00ff0000 /**< Red bit mask. */
# define GMASK 0x0000ff00 /**< Green bit mask. */
# define BMASK 0x000000ff /**< Blue bit mask. */
typedef struct SurfaceImage_s {
int width;
int height;
unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
const unsigned char pixel_data[];
} SurfaceImage_t;
#define ALLOWABLE_ERROR_OPAQUE 0
#define ALLOWABLE_ERROR_BLENDED 64
/**
* @brief Compares a surface and a surface image for equality.
*
* @param sur Surface to compare.
* @param img Image to compare against.
* @return 0 if they are the same, -1 on error and positive if different.
*/
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error );
#endif /* COMMON_H */

View File

@@ -1,22 +0,0 @@
#ifndef IMAGES_H
# define IMAGES_H
#include "common.h"
/*
* Pull in images for testcases.
*/
#include "img_primitives.c"
#include "img_primitivesblend.c"
#include "img_face.c"
#include "img_blit.c"
#include "img_blitblend.c"
#endif /* IMAGES_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,196 +0,0 @@
/* GIMP RGBA C-Source image dump (face.c) */
static const SurfaceImage_t img_face = {
32, 32, 4,
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0"
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
"\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
"\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\0\0\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0"
"\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
"\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0"
"\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0"
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
"\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
"\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0"
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
"\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
"\377\377\0\377\377\377\0",
};

View File

@@ -1,463 +0,0 @@
/* GIMP RGB C-Source image dump (primitives.c) */
static const SurfaceImage_t img_primitives = {
80, 60, 3,
"\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15"
"I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310"
"\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0"
"\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0"
"\0\5ii\0\0\0\5ii\0\0\0\3\1\1\0\0\0\5\2\1\0\0\0\7\3\2\0\0\0\11\4\3\0\0\0\13"
"\5\3\0\0\0\15\6\4\0\0\0\17\7\5\0\0\0\21\10\5\0\0\0\23\11\6\0\0\0\25\12\7"
"\0\0\0\27\13\7\0\0\0\31\14\10\0\0\0\33\15\11\0\0\0\35\16\11\0\0\0\37\17\12"
"\0\0\0!\20\13\0\0\0#\21\13\0\0\0%\22\14\0\0\0'\23\15\15I\310)\24\15\15I\310"
"+\25\16\15I\310-\26\17\15I\310/\27\17\15I\3101\30\20\15I\3103\31\21\15I\310"
"5\32\21\15I\3107\33\22\15I\3109\34\23\15I\310;\35\23\15I\310=\36\24\15I\310"
"?\37\25\15I\310A\40\25\15I\310C!\26\15I\310E\"\27\15I\310G#\27\15I\310I$"
"\30\15I\310K%\31\15I\310M&\31\5iiO'\32\0\0\0\0\0\0\5ii\0\0\0\10\4\2\0\0\0"
"\14\6\4\0\0\0\20\10\5\0\0\0\24\12\6\0\0\0\30\14\10\0\0\0\34\16\11\0\0\0\40"
"\20\12\0\0\0$\22\14\0\0\0(\24\15\0\0\0,\26\16\0\0\0""0\30\20\0\0\0""4\32"
"\21\0\0\0""8\34\22\0\0\0<\36\24\0\0\0@\40\25\0\0\0D\"\26\0\0\0H$\30\0\0\0"
"L&\31\0\0\0P(\32\15I\310T*\34\15I\310X,\35\15I\310\\.\36\15I\310`0\40\15"
"I\310d2!\15I\310h4\"\15I\310l6$\15I\310p8%\15I\310t:&\15I\310x<(\15I\310"
"|>)\15I\310\200@*\15I\310\204B,\15I\310\210D-\15I\310\214F.\15I\310\220H"
"0\15I\310\224J1\15I\310\230L2\5ii\234N4\15I\310\0\0\0\0\0\0\0\0\0\5ii\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d"
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d"
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d"
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
"\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0""77\5\0\377\0\0\377\0\0\377\0"
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377"
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
"\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5i"
"i\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\5ii\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d7"
"7\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310"
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5"
"ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
"\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\5ii\15I\310\15I\310\15I\310\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
"\15I\310\15I\310\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\5ii\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
"\310\15I\310\15I\310\15I\310\15I\310\5ii",
};

View File

@@ -1,645 +0,0 @@
/* GIMP RGB C-Source image dump (alpha.c) */
static const SurfaceImage_t img_blend = {
80, 60, 3,
"\260e\15\222\356/\37\313\15\36\330\17K\3745D\3471\0\20\0D\3502D\3502<\321"
",\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0-\0\377\377"
"\377\377\377\377\311\324\311\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\0H\0\377\377\377\377\377\377\256\307\256\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\0c\0\377\377\377\377\377\377"
"\223\300\223\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\0~\0\377\377\377\377\377\377x\277x\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\0\231\0\377\377\377\377\377\377]\303]\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\0\264\0\377\377\377\377\377"
"\377B\316B\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0"
"\317\0\377\377\377\377\377\377'\335'\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\0\352\0\377\377\377#\262\6\260d\15\260e\15\224\357"
"/&\262\6\34\300\5.\314\22\40\315\12[\3747M\332/\27\331\12\27\331\12K\374"
"5K\3745K\3745D\3471D\3471D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\350"
"2D\3502D\3502D\3502D\3502D\3502\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377,\372\27\273\3465\327"
"Q.\260d\15\213\213\40\241\3601\200\366*=\265\13?\301\25s\375<Y\316-X\320"
"-!\315\13]\3749]\3749O\3321O\3321P\3342P\3342P\3342\371\377\364\371\377\364"
"\371\377\364\371\377\364\371\377\364\362\375\360\362\375\360\362\375\360"
"\362\375\360\362\375\360D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\3502"
"D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"K\3745&\262\6\213\213\40\11\2\0\260`\15\241~#m}\11\273\363AQ\247\15S\266"
"\31\212\373@e\302,\4\33\2s\375<\\\3161M\260*\\\3202X\320-\366\377\354\364"
"\377\352O\3321\3""5\2O\3321O\3321<\261&P\3342P\3342S\3655\377\377\377\377"
"\377\377\14Z\14\377\377\377\377\377\377\234\302\231\371\377\364\362\375\360"
"\367\377\365\362\375\360\362\375\360\13t\13\362\375\360\362\375\360\177\275"
"~\362\375\360\362\375\360\370\377\366\362\375\360\377\377\377\14\220\14\377"
"\377\377D\3502\"\267\33D\3502D\3502K\3779D\3502D\3502\3\233\2D\3502D\350"
"2\34\303\26D\3502D\3502L\377:D\3502D\3502\3\264\2D\3502D\3502\25\323\22\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\14\341\14\377\377"
"\377\377\377\377\40\353\40\377\377\377D\3471\34\300\5e\247\33\356\336?\277"
"f)\260P\17\260i\16\356\336?\331\353C\274\363GQ\247\15\243\370Cp\270)\212"
"\373@h\3021h\3042c\304+\364\377\336\\\3161\\\3161\\\3202\\\3202\\\3202\377"
"\377\377\364\377\352\364\377\352\346\371\342\346\371\342O\3321O\3321P\334"
"2P\3342P\3342P\3342P\3342P\3342\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
"\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
"\360\362\375\360\362\375\360\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502\40"
"\315\12=\265\13f\230\14\237y\15\274Y\17\327Q.\260X\14\243\177$\220\214\""
"\215\235*\274\363G\177\252+\243\370Cu\2661p\270)\367\377\324h\3021h\3021"
"h\3042\364\377\336\364\377\336\335\364\323\\\3161\\\3161\\\3202\\\3202\\"
"\3202\377\377\377\377\377\377\364\377\352\364\377\352\346\371\342\346\371"
"\342\346\371\342\346\371\342O\3321P\3342P\3342P\3342P\3342P\3342P\3342P\334"
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\362\375\360\362\375\360"
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360"
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\6\0\4[\3747?\301\25N\241\14\331\353C\243\177$\275Z\21\377\254W\260Q\17\30"
"\26\7\370\343N\201\210\16|\213-\274\363G\200\2521\202\263+\243\370Cu\266"
"1\12&\4\367\377\324h\3021S\241)h\3042h\3042\377\377\377\364\377\336\335\364"
"\323\24M\23\\\3161\\\3202C\245(\\\3202\\\3202\377\377\377\377\377\377\377"
"\377\377\30l\30\346\371\342\346\371\342\207\273\205\346\371\342\346\371\342"
"\361\377\355\377\377\377P\3342\7t\4P\3342P\3342/\260\"P\3342P\3342^\377@"
"\377\377\377\377\377\377\30\242\30\377\377\377\377\377\377d\306d\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\30\275\30\377\377\377"
"\377\377\377K\322K\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\30\330\30\362\375\360\362\375\3601\3431\362\375\360\362\375\360\377"
"\377\377\362\375\360D\3502M\332/s\375<>\265\14\177\252+\201\210\16\245\204"
"*\377\314U\312\\,\224'\11\260i\17\244\210\40\232\2211\331\353J\215\2351\377"
"\377\276\200\2521\200\2542\375\377\310u\2661t\2702t\2702\367\377\324\325"
"\355\305h\3021h\3042h\3042\377\377\377\377\377\377\364\377\336\335\364\323"
"\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346"
"\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377"
"\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\3342\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\27\331\12Y\316-h\3021\243\370Cg\230\15\230\224\"\245"
"\204*\377\314U\310J\21\327Q.\260b\21\245\2041\370\343N\230\2242\331\353J"
"\214\2402\377\377\276\200\2521\200\2542\375\377\310\317\344\266u\2661t\270"
"2\377\377\377\367\377\324\325\355\305h\3021h\3042h\3042h\3042\377\377\377"
"\377\377\377\364\377\336\335\364\323\335\364\323\335\364\323\335\364\323"
"\\\3202\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371"
"\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377\377"
"\377\377\377\377\377\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\334"
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377K\3745!\315\13d\304,p\270)\177\252+\23\13\6\232\2211\245\204"
"1\347\270O\377\277Y\324<\22\265V\24\377\330Q\244\210\40#(\13\230\224\"\331"
"\353Ju\211.\377\377\276\200\2521\210\273:\200\2542\375\377\310\20""3\6u\266"
"1t\2702\271\307\271\367\377\324\325\355\305\341\377\321h\3021h\3042\16L\7"
"h\3042\377\377\377\242\300\242\377\377\377\335\364\323\355\377\343\335\364"
"\323\335\364\323\14f\7\\\3202\\\3202>\250*\\\3202\377\377\377\377\377\377"
"\377\377\377\377\377\377$\231$\377\377\377\377\377\377s\303s\377\377\377"
"\346\371\342\376\377\372\346\371\342\346\371\342\40\257\37\346\371\342\346"
"\371\342\\\316\\\377\377\377\377\377\377\377\377\377\377\377\377P\3342\13"
"\262\7P\3342P\3342*\327%P\3342P\3342o\377Q\377\377\377\377\377\377$\352$"
"\377\377\377\377\377\377K\3745]\3749s\375<\212\373@\243\370C\274\363G\331"
"\353J\370\343N\377\330Q\377\314U\377\277Y\377\260\\\224(\11\260|\36\245\204"
"1\377\377\250\232\2211\230\224\"\215\2351\214\2402\377\377\276\312\332\250"
"\200\2521\200\2542\377\377\377\317\344\266u\2661t\2702t\2702\377\377\377"
"\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\3042h\3042\377\377"
"\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364"
"\323\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342"
"\346\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377P\3342P\3342"
"P\3342P\3342\377\377\377K\3745O\3321\\\3161h\3021t\2702~\254'\214\240%\377"
"\377\262\370\343N\377\330Q\262x1\277l1\312`1\327R.\260X\23\377\330Q\244\210"
"2\377\377\250\230\2242\377\377\262\215\2351\214\2402\377\377\377\312\332"
"\250\200\2521\200\2542\377\377\377\375\377\310\317\344\266u\2661t\2702t\270"
"2\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\304"
"2h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\\\3202\\\320"
"2\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346\371\342\346"
"\371\342\346\371\342\346\371\342\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377D\3471O\3321\21\7\11c\304+\367\377\324o\2520\200\252"
"1\214\2402\235\226'\377\377\250\377\330Q!\20\11\277l1\310d2\266?\33\224("
"\11\260|\36\257\217;\377\377\250\232\2211\34$\11\377\377\262\215\2351q\206"
"0\377\377\377\312\332\250\217\303@\200\2542\200\25420Z0\317\344\266\317\344"
"\266X\2260t\2702t\2702\377\377\377\377\377\377\325\355\305(l%\325\355\305"
"\325\355\305K\2410h\3042h\3042\377\377\377\377\377\377\377\377\3770\2200"
"\377\377\377\377\377\377t\274p\335\364\323\335\364\323\373\377\361\377\377"
"\377\377\377\377\21\213\11\\\3202\\\3202<\274/\\\3202\377\377\377\377\377"
"\377\377\377\377\377\377\3770\3060\377\377\377\377\377\377V\330V\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\3770\3410\346\371\342\346"
"\371\342>\352>\346\371\342\377\377\377D\3471P\3342\364\377\352s\375<h\302"
"1t\2702~\254'\377\377\276\215\2351\230\2242\244\210\40\377\377\234\262x1"
"\277l1\310W\32\377\260\\\327T1\260|2\377\330Q\244\2102\377\377\250\232\221"
"1\230\2242\377\377\262\215\2351\214\2402\377\377\377\377\377\276\312\332"
"\250\200\2542\200\2542\377\377\377\375\377\310\317\344\266\317\344\266t\270"
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305"
"\325\355\305h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
"\335\364\323\335\364\323\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377D\3471P\3342\364\377\352\\\3161h\3042\367"
"\377\324u\2661\200\2542\214\240%\377\377\262\232\2211\244\2102\377\377\234"
"\262x1\274p2\377\337\207\377\260\\\327T1\227/\14\377\377\234\245\2041\244"
"\2102\307\300\213\230\2242\377\377\377\377\377\262\215\2351\214\2402\377"
"\377\377\377\377\276\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
"\317\344\266\317\344\266\317\344\266t\2702t\2702\377\377\377\377\377\377"
"\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377\377"
"h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
"\335\364\323\377\377\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377<\0<D\3502\371\377\364N\3221\\\3202\364\377"
"\336l\3035t\2702\375\377\310\36\22\13\214\2402\377\377\262\214\2012\244\210"
"2\377\377\234\274\177;\274p2\377\337\207/\24\13\324X2\227/\14\222l3\307\260"
"|\244\2102\377\377\270\232\2211\230\2242<Q<\310\316\231\215\2351o\2065\377"
"\377\377\377\377\276\341\377\277\200\2521\200\2542\36H\13\377\377\377\377"
"\377\377\213\260}\317\344\266t\2702\221\366Ot\2702\377\377\377<\207<\377"
"\377\377\377\377\377}\270v\325\355\305\325\355\305\371\377\351\377\377\377"
"h\3042\30|\13h\3042\377\377\377|\306|\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377<\275<\335\364\323\335\364\323_\317]\335\364\323"
"\335\364\323\377\377\377\377\377\377\377\377\377\25\260\13\\\3202\\\3202"
">\3369\\\3202\377\377\377\377\377\377\377\377\377\377\377\377D\3502\371\377"
"\364O\3321\\\3202\364\377\336h\3042\367\377\324u\2661\200\2542\377\377\276"
"\215\2351\230\2242\307\300\213\244\2102\377\377\234\262x1\274p2\377\337\207"
"\312`1\324E\30\327T1\260|2\377\377\234\245\2041\244\2102\377\377\250\232"
"\2211\230\2242\377\377\377\310\316\231\215\2351\214\2402\377\377\377\377"
"\377\377\312\332\250\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
"\317\344\266\317\344\266\317\344\266t\2702t\2702t\2702\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355"
"\305\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\377\377"
"\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\377\377\377D\3502\371\377"
"\364O\3321\377\377\377\\\3161h\3042\367\377\324t\2702\375\377\310\200\252"
"1\377\377\377\215\2351\230\2242\377\377\250\244\2102\377\377\234\262x1\274"
"p2\316\214_\310d2\377\310|\327T1\227/\14\377\377\377\307\260|\244\2102\377"
"\377\377\307\300\213\230\2242\230\2242\377\377\377\310\316\231\214\2402\214"
"\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\2542\377"
"\377\377\377\377\377\377\377\377\317\344\266\317\344\266\317\344\266t\270"
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377h\3042h\3042"
"h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364"
"\323\335\364\323\335\364\323\377\377\377\377\377\377\377\377\377\377\377"
"\377D\3502\371\377\364R\3344\364\377\352\\\3161H\22Hh\3021\377\377\377o\244"
"2\200\2542\312\332\250\226\245<\377\377\262\230\2242H-/\245\2041\377\377"
"\377\233i5\274p2\277l1\331sC\377\310|\324X2*\15\3\260|2\377\377\234\206s"
"7\244\2102\377\377\250\340\337\244\230\2242\377\377\377Hc2\310\316\231\214"
"\2402n\211:\377\377\377\377\377\377\353\377\311\312\332\250\200\2542$T\16"
"\377\377\377\377\377\377\236\277\236\377\377\377\317\344\266\367\377\336"
"\377\377\377t\2702\40n\16t\2702\377\377\377\212\303\212\377\377\377\377\377"
"\377\377\377\377\325\355\305\325\355\305<\2477\377\377\377\377\377\377O\276"
"Ah\3042h\3042\237\377i\377\377\377\377\377\377H\317H\377\377\377\377\377"
"\377c\335c\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323>\337"
";\335\364\323\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\364"
"\377\336h\3042\367\377\324t\2702\375\377\310\200\2542\377\377\276\214\240"
"2\377\377\262\232\2211\377\377\377\245\2041\377\377\377\262x1\377\377\377"
"\277l1\310d2\312`1\324X2\327T1\260|2\377\377\377\307\260|\244\2102\377\377"
"\377\307\300\213\232\2211\230\2242\377\377\377\377\377\262\310\316\231\214"
"\2402\214\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200"
"\2542\200\2542\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266"
"\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\325\355"
"\305\377\377\377\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\335"
"\364\323h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377"
"\377\215\2351\377\377\377\232\2211\377\377\377\245\2041\377\377\377\262x"
"1\377\377\377\277l1\377\377\377\312`1\377\310|\327T1\227/\14\377\377\377"
"\307\260|\244\2102\244\2102\377\377\377\307\300\213\230\2242\230\2242\377"
"\377\377\310\316\231\310\316\231\214\2402\214\2402\377\377\377\377\377\377"
"\312\332\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377"
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
"\377t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377"
"\377\377\377\377\377\377\377h\3042h\3042h\3042\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360"
"T\11TO\3321\377\377\377Z\3002\377\377\377h\3042\377\377\334t\2702\375\377"
"\310*\30\20\312\332\250\214\2402\262\260\214\230\2242\307\300\213\377\377"
"\377\245\2041\377\377\377:\35\20\377\377\377\277l1\316\264w\310d2\377\310"
"|\356qL\227/\14\260|2TZ3\307\260|\244\2102\274\302\274\307\300\213\307\300"
"\213\273\301U\377\377\377\377\377\377A^2\310\316\231\214\2402o\216B\377\377"
"\377\377\377\377\366\377\324\312\332\250\312\332\250*a\20\200\2542\377\377"
"\377\230\301\230\377\377\377\377\377\377\377\377\353\317\344\266\317\344"
"\266T\253Tt\2702t\2702]\265I\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377T\306T\377\377\377\325\355\305l\324i\325\355\305\377\377"
"\377\377\377\377\377\377\377h\3042\"\254\20h\3042h\3042b\353b\377\377\377"
"\377\377\377D\3502\362\375\360\377\377\377O\3321\377\377\377\\\3202\364\377"
"\336h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377\377"
"\214\2402\377\377\262\230\2242\307\300\213\244\2102\307\260|\377\377\377"
"\262x1\377\377\377\274p2\377\337\207\310d2\377\310|\324X2\333bB\260|2\377"
"\377\377\307\260|\244\2102\244\2102\377\377\377\307\300\213\232\2211\230"
"\2242\377\377\377\377\377\377\310\316\231\310\316\231\214\2402\214\2402\377"
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\254"
"2\200\2542\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
"\344\266\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\355\305"
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377\377\377\377"
"h\3042h\3042\377\377\377\377\377\377D\3471\377\377\377P\3342\364\377\352"
"\\\3202\335\364\323\377\377\377h\3021\377\377\377t\2702\375\377\310\200\254"
"2\312\332\250\377\377\377\215\2351\377\377\377\230\2242\377\377\250\244\210"
"2\307\260|\377\377\377\262x1\377\377\377\274p2\377\337\207\310d2\323xQ\324"
"X2\327T1\227/\14\260|2\377\377\234\307\260|\244\2102\377\377\377\377\377"
"\377\307\300\213\230\2242\230\2242\377\377\377\377\377\377\310\316\231\310"
"\316\231\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250"
"\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
"\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325"
"\355\305\377\377\377\377\377\377`\0`\377\377\377D\3471\371\366\371P\3342"
"\346\371\342\377\377\377\\\3161\377\377\377'\24\22\325\355\305t\2702\276"
"\310\251\377\377\377\200\2542\377\377\316\214\2402\310\316\231`6`\230\224"
"2\377\377\250\222u<\307\260|\377\377\377\315\214L\377\377\377\274p2M,#\310"
"d2\312`1\306\304\306\324X2\333bB\325\242W\377\377\377\307\260|=9\22\244\210"
"2\377\377\377\227\234w\307\300\213\230\2242\307\322a\377\377\377\377\377"
"\377Km9\310\316\231\214\2402r\226K\377\377\377\377\377\377\377\377\377\312"
"\332\250\312\332\250`\242`\200\2542\200\2542\224\306\224\377\377\377\377"
"\377\377\377\377\377\377\377\377\317\344\266M\250D\317\344\266\377\377\377"
"\203\322\203t\2702t\2702\301\377\177\377\377\377\377\377\377`\330`\377\377"
"\377\377\377\377r\344r\377\377\377\377\377\377\377\377\377\325\355\305\377"
"\377\377\377\377\377D\3502\371\377\364P\3342\346\371\342\377\377\377\\\320"
"2\364\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\200\2542\312"
"\332\250\377\377\377\214\2402\310\316\231\230\2242\307\300\213\377\377\377"
"\244\2102\307\260|\377\377\377\200U0\220^\377\7\4/\227U[\246]\377\255Q1\377"
"\242y\10\3/\306M@\6\4/{^\377mVvmVv\6\5/h\\\377h\\\377\\U\204\12\12\360\5"
"\5/VX\377VX\377\12\12\360LR\221\12\12\360\5\6/\214\2402\377\377\377\377\377"
"\377\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200"
"\2542\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344"
"\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371"
"\342\377\377\377\\\3202\335\364\323\377\377\377h\3042\367\377\324t\2702\317"
"\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402\377\377\262"
"\230\2242\307\300\213\377\377\377\244\2102\307\260|{^\377\200U0\220^\377"
"\7\4/\227U[\246]\377\7\3/\377\242y\236\37""2\306M0\210%\14T-2{^\377mVv\6"
"\5/\6\5/h\\\377\\U\204\\U\204\5\5/\5\5/VX\377VX\377LR\221LR\221\377\377\377"
"\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
"\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266\377"
"\377\377\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\365\375\363\377\377"
"\377O\3321l\22l\\\3202\335\364\323\357\346\357h\3042\325\355\305\377\377"
"\377t\2702\317\344\266l-l\200\2521\377\377\377\204\211=\310\316\231\377\377"
"\377\262\243L\307\300\213\377\377\377E&\25mVv{^\377ySB\220^\377\7\4/\275"
"t\201\246]\377\7\3/I\37!\277Z\377\10\3/\237YQ\6\4/{^\377\236\213\247mVv\6"
"\5/,-lh\\\377\\U\204dow\5\5/\5\5/\222\251\377VX\377\310\316\231T{@\377\377"
"\377\214\2402w\240V\377\377\377\377\377\377\377\377\377\377\377\377\312\332"
"\250U\231G\377\377\377\200\2542q\270\\\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377l\317l\317\344\266\317\344\266z\330v\377\377\377"
"\377\377\377\323\377\221t\2702t\2702l\352l\377\377\377\377\377\377\377\377"
"\377D\3502\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\364"
"\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200"
"\2542\312\332\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\307"
"\300\213\377\377\377\6\5/mVv{^\377\200U0\220^\377\7\4/\227U[\246]\377\7\3"
"/\255RN\277Z\377\10\3/\306M@\6\4/{^\377{^\377mVv\6\5/\6\5/h\\\377h\\\377"
"\\U\204\12\12\360\5\5/\12\12\360\377\377\377\377\377\377\310\316\231\310"
"\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377"
"\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200\254"
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\317\344\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702"
"\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\3342\346\371\342"
"\377\377\377\\\3202\335\364\323\377\377\377h\3042\325\355\305\377\377\377"
"t\2702\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402"
"\310\316\231\377\377\377\230\2242\307\300\213h\\\377\6\5/mVv{^\377\200U0"
"\220^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{"
"^\377mVvmVv\6\5/\12\12\360h\\\377\\U\204\\U\204\5\5/\230\2242\377\377\377"
"\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214"
"\2402\377\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
"\250\377\377\377\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
"\344\266\377\377\377\377\377\377\377\377\377\377\377\377D\3502q\10p\377\377"
"\377P\3342\335\350\332\377\377\377\\\3202\351\366\337\377\377\377h\3042d"
"!\\\377\377\377t\2702\277\302\252\377\377\377\200\2542\343\345\301\377\377"
"\377\214\2402^2H\377\377\377\230\2242\257\235\204h\\\377\6\5/\223o\234{^"
"\377\6\4/<\36""1\377\252\215j)2\211XK\377\250\203\202$2\337~c\377\242y\236"
"\37""2]#\26\306M@\6\4/ym\274{^\377mVvELn\6\5/h\\\37703x\\U\204\307\300\213"
"\204\226\\\230\2242\377\377\377\377\377\377\377\377\377\310\316\231^\212"
"H\377\377\377\214\2402}\256b\377\377\377\377\377\377\377\377\377\377\377"
"\377\312\332\250_\251O\377\377\377\377\377\377y\310j\200\2542\377\377\377"
"\377\377\377\377\377\377\377\377\377x\341x\377\377\377\377\377\377\177\350"
"|\317\344\266\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\334"
"2\346\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\304"
"2\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200\2542\312\332"
"\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\\U\204h\\\377"
"\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\255"
"RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377mVvmVv\6\5/\12\12\360h\\\377"
"\377\377\377\307\300\213\377\377\377\230\2242\230\2242\377\377\377\377\377"
"\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214\2402\377"
"\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\312"
"\332\250\377\377\377\200\2542\200\2542\200\2542\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\350"
"2\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377\377\377\\\320"
"2\335\364\323\377\377\377h\3042\325\355\305\377\377\377t\2702\317\344\266"
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\214\2402\310\316"
"\231\377\377\377\5\5/\\U\204h\\\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220"
"^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{^\377"
"\12\12\360mVv\6\5/\6\5/\377\377\377\377\377\377\307\300\213\307\300\213\377"
"\377\377\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
"\231\310\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377"
"\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377\377\377\377\377"
"\204\0\204\377\377\377D\3502\355\364\353\377\377\377\377\377\377Y\335;\346"
"\371\342\377\377\377/\26\31\335\364\323\377\377\377k\255<\325\355\305\377"
"\377\377\377\377\377t\2702\317\344\266\2046\204\200\2542\312\332\250\340"
"\317\340\214\2402\310\316\231\377\377\377VX\377\5\5//\33Dh\\\377\6\5/tVz"
"{^\377\6\4/=0\377\201Vi\220^\377\3\1\30\227U[\246]\377?6U\255RN\277Z\377"
"\337]s\306M0\306M@\3\2\30{^\377{^\377yv}mVv\244\2102\377\377\377\377\377"
"\377\377\377\377gyG\307\300\213\230\2242\212\242h\377\377\377\377\377\377"
"\377\377\377\377\377\377\310\316\231g\230O\377\377\377\214\2402\205\274q"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377h\270V\312\332"
"\250\377\377\377\222\344\222\200\2542\200\2542\377\377\377\377\377\377\377"
"\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346"
"\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\3042\325"
"\355\305\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
"\332\250\377\377\377\214\2402\310\316\231VX\377\12\12\360\5\5/\\U\204h\\"
"\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3"
"/\255RN\255RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377\12\12\360\307\260"
"|\244\2102\244\2102\377\377\377\377\377\377\377\377\377\307\300\213\377\377"
"\377\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310"
"\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377"
"\377\377\377\200\2542\200\2542\377\377\377\377\377\377D\3502\377\377\377"
"\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\377\377\377"
"\335\364\323\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
"\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\377\377\377\214"
"\2402LR\221VX\377\5\5/\\U\204\12\12\360h\\\377\6\5/mVv{^\377\6\4/\12\12\360"
"\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\7\3/\255RN\277Z\377\10\3/\306M@"
"\6\4/\6\4/{^\377\377\377\377\307\260|\377\377\377\244\2102\377\377\377\377"
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\377\377"
"\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231\377\377"
"\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377\377\377\377"
"\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377\377-\17\34\346"
"\371\342\377\377\377\363\346\363\\\3202\335\364\323\377\377\377h\3042\377"
"\377\377x)o\377\377\377t\2702\301\276\255\377\377\377\377\377\377\243\273"
"U\312\332\250\377\377\377O-\34\12\12\360LR\221gU\333\5\5/\\U\204<)\377h\\"
"\377\6\5/=!B{^\377\6\4/A2\306\201Vi\220^\377I9q\227U[\246]\377]-\220\7\3"
"/\255RN\245q\304\10\3/\306M0\377\236\221\6\4/\377\377\377\220\231\220\307"
"\260|\307\260|\226\227m\244\2102\377\377\377\377\377\377\377\377\377\307"
"\300\213p\207N\230\2242\230\2242\254\316\254\377\377\377\377\377\377\377"
"\377\377\310\316\231\310\316\231\220\317\220\377\377\377\214\2402\216\316"
"\200\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377r\310^\312"
"\332\250\377\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377"
"P\3342\377\377\377\346\371\342\377\377\377\\\3202\335\364\323\377\377\377"
"\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702\317\344\266"
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\5\6/LR\221\12\12"
"\360VX\377\5\5/\\U\204h\\\377\12\12\360\6\5/mVv{^\377\6\4/\12\12\360\201"
"Vi\220^\377\7\4/\227U[\12\12\360\246]\377\7\3/\255RN\277Z\377\277Z\377\10"
"\3/\306M@\260|2\260|2\377\377\377\377\377\377\307\260|\377\377\377\244\210"
"2\377\377\377\377\377\377\377\377\377\377\377\377\307\300\213\377\377\377"
"\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
"\231\310\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377D\3502\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377"
"\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\325\355\305\377"
"\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
"\332\250\377\377\377\12\12\360\5\6/LR\221VX\377\12\12\360\5\5/\\U\204h\\"
"\377\6\5/\12\12\360mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\227"
"U[\246]\377\7\3/\255RN\12\12\360\277Z\377\10\3/\333bB\377\377\377\260|2\377"
"\377\377\377\377\377\307\260|\307\260|\244\2102\244\2102\377\377\377\377"
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\230\224"
"2\377\377\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231"
"\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377)\10\36\362\375\360\377\377\377\370"
"\356\370P\3342\346\371\342\377\377\377\377\377\377\\\3202\207\"\201\377\377"
"\377\377\377\377p\250D\325\355\305\377\377\377\377\377\377t\2702\317\344"
"\266\234?\234\200\2542\377\377\377\274\260\244FS\377\5\6/;#\377LR\221VX\377"
"\3\1\34\12\12\360\\U\204{^\330\6\5/\12\12\360\257\203\270{^\377\6\4/\6\4"
"\222\201Vi\220^\377P@d\12\12\360\227U[\370\244\377\7\3/\255RNi./\277Z\377"
"\324X2\264\202w\333bB\260|2\377\377\377\377\377\377\377\377\377yvK\377\377"
"\377\244\2102\236\247|\377\377\377\377\377\377\377\377\377\307\300\213\307"
"\300\213\234\306\234\230\2242\377\377\377\256\330\256\377\377\377\377\377"
"\377\377\377\377\310\316\231\310\316\231\234\341\234\377\377\377\214\240"
"2\232\343\223\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375"
"\360\377\377\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\"
"\3202\335\364\323\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377"
"\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312\332\250\12"
"\12\360FS\377\5\6/LR\221\12\12\360RW\255\3\5\35\6\11\224ZT\\d[\261\3\4\35"
"\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270\4\3\35\6\11\224\226UG\242"
"\\\274\4\3\35\4\3\35\254R@\377\377\311\203U\36\203U\36\323a:my\36my\36\377"
"\377\276\377\377\276\243\255X\243\255X\236\371\236e\204\36\236\371\236\374"
"\377\273\236\371\236\236\371\236\234\275`\236\371\236^\220\36^\220\36\236"
"\371\236\352\377\267\352\377\267\236\371\236\236\371\236\310\316\231\310"
"\316\231\377\377\377\377\377\377\214\2402\377\377\377\377\377\377\377\377"
"\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346\371\342\377\377"
"\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\377\377"
"\377\325\355\305\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377"
"\377\377\200\2542<L\237FS\377\12\12\360\5\6/LR\221\6\11\224RW\255\3\5\35"
"ZT\\\6\11\224d[\261\3\4\35\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270"
"\4\3\35\4\3\35\226UG\242\\\274\6\11\224\4\3\35\304wB\377\377\311\377\377"
"\311\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243"
"\255X\236\371\236e\204\36e\204\36\374\377\273\374\377\273\236\371\236\234"
"\275`\234\275`\236\371\236^\220\36^\220\36\236\371\236\352\377\267\352\377"
"\267\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\250\0\250"
"\377\377\377\377\377\377F\3375\362\375\360\377\377\377\377\377\377P\3342"
"\377\377\377\227\32\224\377\377\377\\\3202\362\340\362\335\364\323\377\377"
"\377\377\377\377h\3042\325\355\305\2506\250\377\377\377t\2702\304\272\262"
"\377\377\377\377\377\377\257\300a\12\12\360<L\237.\32\250\5\6/\12\12\360"
"jSzRW\255\6\11\224D+^ZT\\\6\11\224A&t\3\4\35lVTP9\235w]\264\4\4\35YG\347"
"\200VN\214]\270\3\4a\4\3\35\226UG\244y\257\6\11\224{a\36\377\322\246\236"
"\371\236\377\377\311V6\23\323a:\323a:\223\231y\236\371\236\377\377\276\377"
"\377\377\243\255X\243\255Xh\270he\204\36\236\371\236\272\322\253\374\377"
"\273\236\371\236\377\377\350\236\371\236\236\371\236=y\23\236\371\236\236"
"\371\236\262\344\262\377\377\377\377\377\377\377\377\377\310\316\231\377"
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
"\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
"\377\377\377\317\344\266\377\377\377\377\377\377\5\6/<L\237\12\12\360FS\377"
"\5\6/\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\d[\261\6\11\224\3\4\35lVT\6\11"
"\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226UG\242\\\274"
"\377\377\306{a\36\304wB\304wB\377\377\311\203U\36\203U\36\323a:my\36my\36"
"\377\377\276\377\377\276\236\371\236\243\255X\236\371\236e\204\36e\204\36"
"\236\371\236\374\377\273\236\371\236\234\275`\234\275`\236\371\236^\220\36"
"^\220\36\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
"\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377"
"\377t\2702\317\344\266\377\377\377\377\377\377\5\6/\12\12\360<L\237FS\377"
"\12\12\360\3\5\35JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\d[\261\6\11\224\3"
"\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226"
"UG\236\371\236\377\377\306{a\36\236\371\236\304wB\377\377\311\236\371\236"
"\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243\255"
"X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374\377\273\236\371"
"\236\234\275`\234\275`\236\371\236\230\2242\230\2242\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377J\3508\377\377\377\362"
"\375\360\264\22\264\377\377\377P\3342\340\340\335\377\377\377\377\377\377"
"u\325K\377\377\377\335\364\323\264-\264\377\377\377h\3042\315\305\301\377"
"\377\377\377\377\377\240\307^\377\377\377\317\344\266\264H\264\12\12\360"
"\5\6/aL\245\12\12\360FS\377E(\323\3\5\35JQb\4\3hRW\255\3\5\35O2\241ZT\\d"
"[\261X>\346\3\4\35lVT\4\4hw]\264\4\4\35aK\244\200VN\214]\270kZ\371\4\3\35"
"\270\212Io\225o\377\377\306{a\36\253\300\253\304wB\377\377\311\377\377\377"
"\203U\36\323a:\224D(my\36\236\371\236\307\316\266\377\377\276\236\371\236"
"\377\377\343\236\371\236e\204\36Gk\25\236\371\236\374\377\273\260\334\260"
"\236\371\236\234\275`\377\377\377\377\377\377\230\2242k\207#\377\377\377"
"\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377"
"\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\\3202\377\377"
"\377\335\364\323\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
"\377\377\377\377\377t\2702\317\344\266\377\377\3778L\377\12\12\360\5\6/<"
"L\237\12\12\360BR\252\3\5\35\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\\6\11\224"
"d[\261\6\11\224\3\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6"
"\11\224tm\36\270\212I\270\212I\377\377\306{a\36{a\36\304wB\236\371\236\377"
"\377\311\203U\36\236\371\236\323a:my\36my\36\236\371\236\377\377\276\236"
"\371\236\243\255X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374"
"\377\273\236\371\236\307\300\213\307\300\213\377\377\377\377\377\377\230"
"\2242\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377"
"\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377\377\377"
"\\\3202\335\364\323\377\377\377\377\377\377\377\377\377h\3042\325\355\305"
"\377\377\377\377\377\377t\2702\377\377\377\317\344\2668L\377\12\12\360\5"
"\6/\12\12\360<L\237BR\252\6\11\224\3\5\35JQb\6\11\224RW\255\6\11\224\3\5"
"\35ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT\6\11\224w]\264\4\4\35\6\11\224"
"\200VN\214]\270\236\371\236tm\36\236\371\236\270\212I\377\377\306\236\371"
"\236{a\36\304wB\236\371\236\377\377\311\203U\36\203U\36\323a:\236\371\236"
"my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255X\236\371\236"
"e\204\36e\204\36\236\371\236\374\377\273\377\377\377\377\377\377\307\300"
"\213\307\300\213\377\377\377\377\377\377\377\377\377\377\377\3773\10%\377"
"\377\377\362\375\360\372\356\372\377\377\377P\3342\377\377\377\346\371\342"
"\377\377\377\300$\300\\\3202\377\377\377\327\317\316\377\377\377\377\377"
"\377\220\317Z\377\377\377\325\355\305\300?\300\377\377\377t\2702\312\267"
"\270\12\12\3608L\377F#\377\5\6/<L\237\4\3oBR\252\6\11\224K)[JQb\6\11\224"
"\243\204\376\3\5\35\6\11\224C&E\6\11\224d[\261_@l\6\11\224lVTkP\371w]\264"
"\4\4\35\4\5o\200VN\377\377\302\262\276\262tm\36\236\371\236\377\360\302\377"
"\377\306\236\371\236\\A\26\304wB\304wB\322\312\302\236\371\236\203U\36\377"
"\355\310\323a:my\36R]\26\236\371\236\377\377\276\270\326\270\243\255X\236"
"\371\236\377\377\377e\204\36\236\371\236\300\341\300\377\377\377\377\377"
"\377\305\353\305\307\300\213\377\377\377\377\377\377\377\377\377D\3502\377"
"\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377t\2702\377\377"
"\3770E\254\12\12\3608L\377\5\6/\12\12\360:Lj\6\11\224BR\252\3\5\35\6\11\224"
"JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT"
"\6\11\224w]\264\4\4\35\6\11\224\255\235Q\377\377\302\377\377\302tm\36\236"
"\371\236\270\212I\377\377\306\377\377\306{a\36\236\371\236\304wB\377\377"
"\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236\371\236\377"
"\377\276\236\371\236\243\255X\243\255X\236\371\236e\204\36\244\2102\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377D\3502\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377"
"\377\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\335\364\323\377"
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
"\377\377\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\254"
"2\236\371\236\222\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312"
"g\352\377\267\236\371\236^\220\36\236\371\236\234\275`\374\377\273\236\371"
"\236e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236"
"\255\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377"
"\377\306{a\36\236\371\236\304wB\236\371\236\377\377\311\203U\36\203U\36\323"
"a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255"
"X\236\371\236\377\377\377\244\2102\377\377\377\377\377\377\377\377\377\314"
"\0\314\377\377\377\377\377\377H\3377\377\377\377\362\375\360\377\377\377"
"\377\377\377\377\377\377@\27(\346\371\342\377\377\377\367\340\367\377\377"
"\377\\\3202\377\377\377\335\364\323\377\377\377\3146\314h\3042\377\377\377"
"\322\301\306\377\377\377\377\377\377\255\314k\377\377\377\317\344\266\314"
"Q\314\377\377\377\200\2542\256\300\256\222\326p\236\371\236\377\377\377\236"
"\371\236V\234\36xUR\236\371\236\352\377\267\262\273\262^\220\36\234\275`"
"\377\377\377\374\377\273\236\371\236PE\30\236\371\236\243\255X\342\300\305"
"\236\371\236my\36\377\377\377\255\235Q\236\371\236\314\242\233tm\36\236\371"
"\236\304\237\240\236\371\236\377\377\306\377\340\256{a\36\304wB~\270~\377"
"\377\311\236\371\236\273\254\244\323a:\323a:\377\377\303my\36\236\371\236"
"\314\330\230\236\371\236\243\255X\313\332\302\377\377\377\244\2102\377\377"
"\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362"
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377\377t\270"
"2\317\344\266\377\377\377\377\377\377\377\377\377O\247\36\236\371\236\222"
"\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312g\236\371\236\352"
"\377\267\236\371\236^\220\36\234\275`\236\371\236\374\377\273\236\371\236"
"e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236\255"
"\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377\377"
"\306\236\371\236{a\36\304wB\304wB\377\377\311\236\371\236\203U\36\236\371"
"\236\323a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\377\377\377"
"\307\260|\377\377\377\377\377\377\244\2102\377\377\377\377\377\377\377\377"
"\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377\377\377\377P\334"
"2\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\377\377\377\335"
"\364\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305"
"\377\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377"
"\377\236\371\236O\247\36\222\326p\236\371\236\332\377\264\236\371\236V\234"
"\36\236\371\236\226\312g\236\371\236\352\377\267^\220\36\236\371\236\234"
"\275`\236\371\236\374\377\273\236\371\236e\204\36\236\371\236\243\255X\377"
"\377\276\236\371\236my\36\236\371\236\255\235Q\236\371\236\377\377\302tm"
"\36tm\36\270\212I\236\371\236\377\377\306\236\371\236{a\36\236\371\236\304"
"wB\377\377\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236"
"\371\236\236\371\236\377\377\377\377\377\377\307\260|\307\260|\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360\330\22"
"\330\377\377\377\377\377\377]\306B\377\377\377\346\371\342\377\377\377\377"
"\377\377\377\377\377M$*\335\364\323\377\377\377\366\324\366\377\377\377h"
"\3042\377\377\377\325\355\305\377\377\377\330H\330\377\377\377t\2702\321"
"\264\300\377\377\377\377\377\377\352\377\352O\247\36\236\371\236{S^\236\371"
"\236\332\377\264\266\274\266V\234\36\226\312g\377\377\377\352\377\267\236"
"\371\236OG\31\236\371\236\234\275`\274\274\274\374\377\273\236\371\236\336"
"\325\227\243\255X\236\371\236\330\231\240\236\371\236my\36\302\300\302\255"
"\235Q\236\371\236\377\377\377\236\371\236tm\36\233a=\236\371\236\377\377"
"\306\310\314\310{a\36\236\371\236\377\377\351\236\371\236\377\377\311nE\31"
"\203U\36\323a:\326\304\276my\36my\36\377\377\377\377\377\377\377\377\377"
"\330\352\330\307\260|\377\377\377\377\377\377\377\377\377\377\377\377D\350"
"2\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371"
"\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377"
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
"\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377\377\377"
"\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\214\2402\377"
"\377\377\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377"
"\377\307\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377"
"\377\377\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377"
"\377\377\377\377\377\274p2\316\214_\316\214_\377\377\377\377\377\377\310"
"d2\377\377\377\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377"
"\333bB\377\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375"
"\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377"
"\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377\377"
"\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377"
"\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\2542\377\377"
"\377\312\332\250\377\377\377\377\377\377\377\377\377\214\2402\377\377\377"
"\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377\377\307"
"\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377\377\377"
"\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377\377\377"
"\377\377\377\274p2\377\377\377\316\214_\377\377\377\377\377\377\310d2\310"
"d2\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377"
"\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\344\11\344D\3502\377\377\377\360\354\357\377\377\377\377\377"
"\377\377\377\377P\3342\377\377\377\315#\312\377\377\377\377\377\377s\262"
"Q\377\377\377\335\364\323\377\377\377\377\377\377\377\377\377\\0,\377\377"
"\377\325\355\305\367\313\367\377\377\377\377\377\377\274\321z\377\377\377"
"\317\344\266\344Z\344\377\377\377\377\377\377\246\217v\377\377\377\312\332"
"\250\377\377\377\377\377\377\377\377\377}I,\377\377\377\310\316\231\361\277"
"\361\377\377\377\230\2242\377\377\377\307\300\213\377\377\377\344\220\344"
"\377\377\377\244\2102\356\301\356\307\260|\377\377\377\377\377\377\377\377"
"\377\260|2\344\253\344\312\237n\377\377\377\353\312\353\377\377\377\274p"
"2\377\377\377\316\214_\377\377\377\344\306\344\377\377\377\310d2\340\276"
"\310\323xQ\377\377\377\377\377\377\324X2\324X2\303V;\333bB\260|2\337\340"
"\325\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377"
"\377\377\362\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377"
"\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364"
"\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
"\377\377\377\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377"
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377\260"
"|2\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362"
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
"\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377"
"\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377"
"\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377"
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377",
};

View File

@@ -1,172 +0,0 @@
/**
* Automated SDL platform test.
*
* Based off of testplatform.c.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "SDL_endian.h"
#include "SDL_cpuinfo.h"
#include "../SDL_at.h"
/*
* Prototypes.
*/
static int plat_testSize( size_t sizeoftype, size_t hardcodetype );
static void plat_testTypes (void);
/**
* @brief Test size.
*
* @note Watcom C flags these as Warning 201: "Unreachable code" if you just
* compare them directly, so we push it through a function to keep the
* compiler quiet. --ryan.
*/
static int plat_testSize( size_t sizeoftype, size_t hardcodetype )
{
return sizeoftype != hardcodetype;
}
/**
* @brief Tests type size.
*/
static void plat_testTypes (void)
{
int ret;
SDL_ATbegin( "Type size" );
ret = plat_testSize( sizeof(Uint8), 1 );
if (SDL_ATvassert( ret == 0, "sizeof(Uint8) = %lu instead of 1", sizeof(Uint8) ))
return;
ret = plat_testSize( sizeof(Uint16), 2 );
if (SDL_ATvassert( ret == 0, "sizeof(Uint16) = %lu instead of 2", sizeof(Uint16) ))
return;
ret = plat_testSize( sizeof(Uint32), 4 );
if (SDL_ATvassert( ret == 0, "sizeof(Uint32) = %lu instead of 4", sizeof(Uint32) ))
return;
#ifdef SDL_HAS_64BIT_TYPE
ret = plat_testSize( sizeof(Uint64), 8 );
if (SDL_ATvassert( ret == 0, "sizeof(Uint64) = %lu instead of 8", sizeof(Uint64) ))
return;
#endif /* SDL_HAS_64BIT_TYPE */
SDL_ATend();
}
/**
* @brief Tests platform endianness.
*/
static void plat_testEndian (void)
{
Uint16 value = 0x1234;
int real_byteorder;
Uint16 value16 = 0xCDAB;
Uint16 swapped16 = 0xABCD;
Uint32 value32 = 0xEFBEADDE;
Uint32 swapped32 = 0xDEADBEEF;
#ifdef SDL_HAS_64BIT_TYPE
Uint64 value64, swapped64;
value64 = 0xEFBEADDE;
value64 <<= 32;
value64 |= 0xCDAB3412;
swapped64 = 0x1234ABCD;
swapped64 <<= 32;
swapped64 |= 0xDEADBEEF;
#endif
SDL_ATbegin( "Endianness" );
/* Test endianness. */
if ((*((char *) &value) >> 4) == 0x1) {
real_byteorder = SDL_BIG_ENDIAN;
} else {
real_byteorder = SDL_LIL_ENDIAN;
}
if (SDL_ATvassert( real_byteorder == SDL_BYTEORDER,
"Machine detected as %s endian but appears to be %s endian.",
(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big",
(real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big" ))
return;
/* Test 16 swap. */
if (SDL_ATvassert( SDL_Swap16(value16) == swapped16,
"16 bit swapped incorrectly: 0x%X => 0x%X",
value16, SDL_Swap16(value16) ))
return;
/* Test 32 swap. */
if (SDL_ATvassert( SDL_Swap32(value32) == swapped32,
"32 bit swapped incorrectly: 0x%X => 0x%X",
value32, SDL_Swap32(value32) ))
return;
#ifdef SDL_HAS_64BIT_TYPE
/* Test 64 swap. */
if (SDL_ATvassert( SDL_Swap64(value64) == swapped64,
#ifdef _MSC_VER
"64 bit swapped incorrectly: 0x%I64X => 0x%I64X",
#else
"64 bit swapped incorrectly: 0x%llX => 0x%llX",
#endif
value64, SDL_Swap64(value64) ))
return;
#endif
SDL_ATend();
}
/**
* @brief Platform test entrypoint.
*/
#ifdef TEST_STANDALONE
int main( int argc, const char *argv[] )
{
(void) argc;
(void) argv;
#else /* TEST_STANDALONE */
int test_platform (void)
{
#endif /* TEST_STANDALONE */
SDL_ATinit( "Platform" );
/* Debug information. */
SDL_ATprintVerbose( 1, "%s System detected\n", SDL_GetPlatform() );
SDL_ATprintVerbose( 1, "System is %s endian\n",
#ifdef SDL_LIL_ENDIAN
"little"
#else
"big"
#endif
);
SDL_ATprintVerbose( 1, "CPU count: %d\n", SDL_GetCPUCount());
SDL_ATprintVerbose( 1, "Available extensions:\n" );
SDL_ATprintVerbose( 1, " RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " MMX %s\n", SDL_HasMMX()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " SSE %s\n", SDL_HasSSE()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected" );
SDL_ATprintVerbose( 1, " SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected" );
plat_testTypes();
plat_testEndian();
return SDL_ATfinish();
}

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_PLATFORM
# define _TEST_PLATFORM
int test_platform (void);
#endif /* _TEST_PLATFORM */

View File

@@ -1,156 +0,0 @@
/**
* Automated SDL rect test.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL_rect.h"
#include "../SDL_at.h"
/*
* Prototypes.
*/
static void rect_testIntersectRectAndLine (void);
/**
* @brief Tests SDL_IntersectRectAndLine()
*/
static void rect_testIntersectRectAndLine (void)
{
SDL_Rect rect = { 0, 0, 32, 32 };
int x1, y1;
int x2, y2;
SDL_bool clipped;
SDL_ATbegin( "IntersectRectAndLine" );
x1 = -10;
y1 = 0;
x2 = -10;
y2 = 31;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( !clipped &&
x1 == -10 && y1 == 0 && x2 == -10 && y2 == 31,
"line outside to the left was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 40;
y1 = 0;
x2 = 40;
y2 = 31;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( !clipped &&
x1 == 40 && y1 == 0 && x2 == 40 && y2 == 31,
"line outside to the right was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 0;
y1 = -10;
x2 = 31;
y2 = -10;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( !clipped &&
x1 == 0 && y1 == -10 && x2 == 31 && y2 == -10,
"line outside above was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 0;
y1 = 40;
x2 = 31;
y2 = 40;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( !clipped &&
x1 == 0 && y1 == 40 && x2 == 31 && y2 == 40,
"line outside below was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 0;
y1 = 0;
x2 = 31;
y2 = 31;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31,
"line fully inside rect was clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = -10;
y1 = 15;
x2 = 40;
y2 = 15;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 0 && y1 == 15 && x2 == 31 && y2 == 15,
"horizontal line rect was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = -32;
y1 = -32;
x2 = 63;
y2 = 63;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31,
"diagonal line to lower right was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 63;
y1 = 63;
x2 = -32;
y2 = -32;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 31 && y1 == 31 && x2 == 0 && y2 == 0,
"diagonal line to upper left was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = 63;
y1 = -32;
x2 = -32;
y2 = 63;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 31 && y1 == 0 && x2 == 0 && y2 == 31,
"diagonal line to lower left was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
x1 = -32;
y1 = 63;
x2 = 63;
y2 = -32;
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
SDL_ATvassert( clipped &&
x1 == 0 && y1 == 31 && x2 == 31 && y2 == 0,
"diagonal line to upper right was incorrectly clipped: %d,%d - %d,%d",
x1, y1, x2, y2);
SDL_ATend();
}
/**
* @brief Rect test entrypoint.
*/
#ifdef TEST_STANDALONE
int main( int argc, const char *argv[] )
{
(void) argc;
(void) argv;
#else /* TEST_STANDALONE */
int test_rect (void)
{
#endif /* TEST_STANDALONE */
SDL_ATinit( "Rect" );
rect_testIntersectRectAndLine();
return SDL_ATfinish();
}

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_RECT
# define _TEST_RECT
int test_rect (void);
#endif /* _TEST_RECT */

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_RENDER
# define _TEST_RENDER
int test_render (void);
#endif /* _TEST_RENDER */

View File

@@ -1,14 +0,0 @@
#include <stdio.h>
#include "SDL.h"
#ifndef TestSupportRWops_h
#define TestSupportRWops_h
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode);
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode);
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode);
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode);
#endif

View File

@@ -1,89 +0,0 @@
#import "TestSupportRWops.h"
#import <Foundation/Foundation.h>
#include "SDL.h"
/* For proper OS X applications, the resources are contained inside the application bundle.
So the strategy is to first check the application bundle for the file, then fallback to the current working directory.
Note: One additional corner-case is if the resource is in a framework's resource bundle instead of the app.
We might want to use bundle identifiers, e.g. org.libsdl.sdl to get the bundle for the framework,
but we would somehow need to know what the bundle identifiers we need to search are.
Conversely, write directories are usually not in the bundles. This implementation uses NSTemporaryDirectory,
but consider Preferences, Application Support, Documents, etc.
Also, note the bundle layouts are different for iPhone and Mac.
*/
const char* RWOPS_READ = "rwops/read";
const char* RWOPS_WRITE = "write";
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode)
{
FILE* fp = NULL;
// If the file mode is writable, skip all the bundle stuff because generally the bundle is read-only.
if(strcmp("r", mode) && strcmp("rb", mode))
{
return fopen(file, mode);
}
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
NSFileManager* file_manager = [NSFileManager defaultManager];
NSString* resource_path = [[NSBundle mainBundle] resourcePath];
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
NSString* full_path_with_file_to_try = [resource_path stringByAppendingPathComponent:ns_string_file_component];
if([file_manager fileExistsAtPath:full_path_with_file_to_try])
{
fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode);
}
else
{
fp = fopen(file, mode);
}
[autorelease_pool drain];
return fp;
}
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode)
{
FILE* fp = NULL;
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
NSFileManager* file_manager = [NSFileManager defaultManager];
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component];
fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode);
[autorelease_pool drain];
return fp;
}
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode)
{
return SDL_RWFromFile(file, mode);
}
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode)
{
SDL_RWops* rw = NULL;
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
NSFileManager* file_manager = [NSFileManager defaultManager];
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component];
rw = SDL_RWFromFile( [full_path_with_file_to_try fileSystemRepresentation], mode );
[autorelease_pool drain];
return rw;
}

View File

@@ -1,32 +0,0 @@
/* Generic implementation for file opening routines.
* Customizations for specific platforms should go in alternative files.
*/
// quiet windows compiler warnings
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "SDL.h"
const char* RWOPS_READ = "rwops/read";
const char* RWOPS_WRITE = "rwops/write";
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode)
{
return fopen(file, mode);
}
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode)
{
return fopen(file, mode);
}
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode)
{
return SDL_RWFromFile(file, mode);
}
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode)
{
return SDL_RWFromFile(file, mode);
}

View File

@@ -1 +0,0 @@
Hello World!

View File

@@ -1,272 +0,0 @@
/**
* Automated SDL_RWops test.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "../SDL_at.h"
#include "TestSupportRWops.h"
/* Defined in TestSupportRWops implementation to allow flexibility. */
extern const char* RWOPS_READ;
extern const char* RWOPS_WRITE;
static const char hello_world[] = "Hello World!";
/**
* @brief Makes sure parameters work properly.
*/
static void rwops_testParam (void)
{
SDL_RWops *rwops;
/* Begin testcase. */
SDL_ATbegin( "RWops Parameters" );
/* These should all fail. */
rwops = SDL_RWFromFile(NULL, NULL);
if (SDL_ATassert( "SDL_RWFromFile(NULL, NULL) worked", rwops == NULL ))
return;
rwops = SDL_RWFromFile(NULL, "ab+");
if (SDL_ATassert( "SDL_RWFromFile(NULL, \"ab+\") worked", rwops == NULL ))
return;
rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
if (SDL_ATassert( "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked", rwops == NULL ))
return;
rwops = SDL_RWFromFile("something", "");
if (SDL_ATassert( "SDL_RWFromFile(\"something\", \"\") worked", rwops == NULL ))
return;
rwops = SDL_RWFromFile("something", NULL);
if (SDL_ATassert( "SDL_RWFromFile(\"something\", NULL) worked", rwops == NULL ))
return;
/* End testcase. */
SDL_ATend();
}
/**
* @brief Does a generic rwops test.
*
* RWops should have "Hello World!" in it already if write is disabled.
*
* @param write Test writing also.
* @return 1 if an assert is failed.
*/
static int rwops_testGeneric( SDL_RWops *rw, int write )
{
char buf[sizeof(hello_world)];
int i;
/* Set to start. */
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
if (SDL_ATvassert( i == 0,
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
i, 0 ))
return 1;
/* Test write. */
i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
if (write) {
if (SDL_ATassert( "Writing with SDL_RWwrite (failed to write)", i == 1 ))
return 1;
}
else {
if (SDL_ATassert( "Writing with SDL_RWwrite (wrote when shouldn't have)", i <= 0 ))
return 1;
}
/* Test seek. */
i = SDL_RWseek( rw, 6, RW_SEEK_SET );
if (SDL_ATvassert( i == 6,
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
i, 0 ))
return 1;
/* Test seek. */
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
if (SDL_ATvassert( i == 0,
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
i, 0 ))
return 1;
/* Test read. */
i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 );
if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 ))
return 1;
if (SDL_ATassert( "Memory read does not match memory written",
SDL_memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 ))
return 1;
/* More seek tests. */
i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
if (SDL_ATvassert( i == sizeof(hello_world)-5,
"Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d",
i, sizeof(hello_world)-5 ))
return 1;
i = SDL_RWseek( rw, -1, RW_SEEK_END );
if (SDL_ATvassert( i == sizeof(hello_world)-2,
"Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d",
i, sizeof(hello_world)-2 ))
return 1;
return 0;
}
/**
* @brief Tests opening from memory.
*/
static void rwops_testMem (void)
{
char mem[sizeof(hello_world)];
SDL_RWops *rw;
/* Begin testcase. */
SDL_ATbegin( "SDL_RWFromMem" );
/* Open. */
rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 );
if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
return;
/* Run generic tests. */
if (rwops_testGeneric( rw, 1 ))
return;
/* Close. */
SDL_FreeRW( rw );
/* End testcase. */
SDL_ATend();
}
static const char const_mem[] = "Hello World!";
/**
* @brief Tests opening from memory.
*/
static void rwops_testConstMem (void)
{
SDL_RWops *rw;
/* Begin testcase. */
SDL_ATbegin( "SDL_RWFromConstMem" );
/* Open. */
rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 );
if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
return;
/* Run generic tests. */
if (rwops_testGeneric( rw, 0 ))
return;
/* Close. */
SDL_FreeRW( rw );
/* End testcase. */
SDL_ATend();
}
/**
* @brief Tests opening from memory.
*/
static void rwops_testFile (void)
{
SDL_RWops *rw;
/* Begin testcase. */
SDL_ATbegin( "SDL_RWFromFile" );
/* Read test. */
rw = TestSupportRWops_OpenRWopsFromReadDir( RWOPS_READ, "r" );
if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_READ", rw != NULL ))
return;
if (rwops_testGeneric( rw, 0 ))
return;
SDL_FreeRW( rw );
/* Write test. */
rw = TestSupportRWops_OpenRWopsFromWriteDir( RWOPS_WRITE, "w+" );
if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_WRITE", rw != NULL ))
return;
if (rwops_testGeneric( rw, 1 ))
return;
SDL_FreeRW( rw );
/* End testcase. */
SDL_ATend();
}
/**
* @brief Tests opening from memory.
*/
static void rwops_testFP (void)
{
#ifdef HAVE_STDIO_H
FILE *fp;
SDL_RWops *rw;
/* Begin testcase. */
SDL_ATbegin( "SDL_RWFromFP" );
/* Run read tests. */
fp = TestSupportRWops_OpenFPFromReadDir( RWOPS_READ, "r" );
if (SDL_ATassert( "Failed to open file 'WOPS_READ", fp != NULL))
return;
rw = SDL_RWFromFP( fp, 1 );
if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
return;
if (rwops_testGeneric( rw, 0 ))
return;
SDL_FreeRW( rw );
/* Run write tests. */
fp = TestSupportRWops_OpenFPFromWriteDir( RWOPS_WRITE, "w+" );
if (SDL_ATassert( "Failed to open file RWOPS_WRITE", fp != NULL))
return;
rw = SDL_RWFromFP( fp, 1 );
if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
return;
if (rwops_testGeneric( rw, 1 ))
return;
SDL_FreeRW( rw );
/* End testcase. */
SDL_ATend();
#endif /* HAVE_STDIO_H */
}
/**
* @brief Entry point.
*/
#ifdef TEST_STANDALONE
int main( int argc, const char *argv[] )
{
(void) argc;
(void) argv;
#else /* TEST_STANDALONE */
int test_rwops (void)
{
#endif /* TEST_STANDALONE */
SDL_ATinit( "SDL_RWops" );
rwops_testParam();
rwops_testMem();
rwops_testConstMem();
rwops_testFile();
rwops_testFP();
return SDL_ATfinish();
}

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_RWOPS
# define _TEST_RWOPS
int test_rwops (void);
#endif /* _TEST_RWOPS */

View File

@@ -1,449 +0,0 @@
/**
* Automated SDL_Surface test.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "SDL_surface.h"
#include "SDL_video.h"
#include "../SDL_at.h"
#include "../common/common.h"
/*
* Pull in images for testcases.
*/
#include "../common/images.h"
/*
* Prototypes.
*/
/* Testcases. */
static void surface_testLoad( SDL_Surface *testsur );
static void surface_testBlit( SDL_Surface *testsur );
static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, int mode );
static void surface_testBlitBlend( SDL_Surface *testsur );
/**
* @brief Tests sprite loading.
*/
static void surface_testLoad( SDL_Surface *testsur )
{
int ret;
SDL_Surface *face, *rface;
SDL_ATbegin( "Load Test" );
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Create the blit surface. */
#ifdef __APPLE__
face = SDL_LoadBMP("icon.bmp");
#else
face = SDL_LoadBMP("../icon.bmp");
#endif
if (SDL_ATassert( "SDL_CreateLoadBmp", face != NULL))
return;
/* Set transparent pixel as the pixel at (0,0) */
if (face->format->palette) {
ret = SDL_SetColorKey(face, SDL_RLEACCEL, *(Uint8 *) face->pixels);
if (SDL_ATassert( "SDL_SetColorKey", ret == 0))
return;
}
/* Convert to 32 bit to compare. */
rface = SDL_ConvertSurface( face, testsur->format, 0 );
if (SDL_ATassert( "SDL_ConvertSurface", rface != NULL))
return;
/* See if it's the same. */
if (SDL_ATassert( "Primitives output not the same.",
surface_compare( rface, &img_face, 0 )==0 ))
return;
/* Clean up. */
SDL_FreeSurface( rface );
SDL_FreeSurface( face );
SDL_ATend();
}
/**
* @brief Tests some blitting routines.
*/
static void surface_testBlit( SDL_Surface *testsur )
{
int ret;
SDL_Rect rect;
SDL_Surface *face;
int i, j, ni, nj;
SDL_ATbegin( "Blit Tests" );
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Create face surface. */
face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data,
img_face.width, img_face.height, 32, img_face.width*4,
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
0xff000000, /* Red bit mask. */
0x00ff0000, /* Green bit mask. */
0x0000ff00, /* Blue bit mask. */
0x000000ff /* Alpha bit mask. */
#else
0x000000ff, /* Red bit mask. */
0x0000ff00, /* Green bit mask. */
0x00ff0000, /* Blue bit mask. */
0xff000000 /* Alpha bit mask. */
#endif
);
if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL))
return;
/* Constant values. */
rect.w = face->w;
rect.h = face->h;
ni = testsur->w - face->w;
nj = testsur->h - face->h;
/* Loop blit. */
for (j=0; j <= nj; j+=4) {
for (i=0; i <= ni; i+=4) {
/* Blitting. */
rect.x = i;
rect.y = j;
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
return;
}
}
/* See if it's the same. */
if (SDL_ATassert( "Blitting output not the same (normal blit).",
surface_compare( testsur, &img_blit, 0 )==0 ))
return;
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Test blitting with colour mod. */
for (j=0; j <= nj; j+=4) {
for (i=0; i <= ni; i+=4) {
/* Set colour mod. */
ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j );
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
return;
/* Blitting. */
rect.x = i;
rect.y = j;
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
return;
}
}
/* See if it's the same. */
if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceColorMod).",
surface_compare( testsur, &img_blitColour, 0 )==0 ))
return;
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Restore colour. */
ret = SDL_SetSurfaceColorMod( face, 255, 255, 255 );
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
return;
/* Test blitting with colour mod. */
for (j=0; j <= nj; j+=4) {
for (i=0; i <= ni; i+=4) {
/* Set alpha mod. */
ret = SDL_SetSurfaceAlphaMod( face, (255/ni)*i );
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
return;
/* Blitting. */
rect.x = i;
rect.y = j;
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
return;
}
}
/* See if it's the same. */
if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceAlphaMod).",
surface_compare( testsur, &img_blitAlpha, 0 )==0 ))
return;
/* Clean up. */
SDL_FreeSurface( face );
SDL_ATend();
}
/**
* @brief Tests a blend mode.
*/
static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, int mode )
{
int ret;
int i, j, ni, nj;
SDL_Rect rect;
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return 1;
/* Steps to take. */
ni = testsur->w - face->w;
nj = testsur->h - face->h;
/* Constant values. */
rect.w = face->w;
rect.h = face->h;
/* Test blend mode. */
for (j=0; j <= nj; j+=4) {
for (i=0; i <= ni; i+=4) {
/* Set blend mode. */
ret = SDL_SetSurfaceBlendMode( face, mode );
if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0))
return 1;
/* Blitting. */
rect.x = i;
rect.y = j;
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
return 1;
}
}
return 0;
}
/**
* @brief Tests some more blitting routines.
*/
static void surface_testBlitBlend( SDL_Surface *testsur )
{
int ret;
SDL_Rect rect;
SDL_Surface *face;
int i, j, ni, nj;
int mode;
SDL_ATbegin( "Blit Blending Tests" );
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Create the blit surface. */
face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data,
img_face.width, img_face.height, 32, img_face.width*4,
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
0xff000000, /* Red bit mask. */
0x00ff0000, /* Green bit mask. */
0x0000ff00, /* Blue bit mask. */
0x000000ff /* Alpha bit mask. */
#else
0x000000ff, /* Red bit mask. */
0x0000ff00, /* Green bit mask. */
0x00ff0000, /* Blue bit mask. */
0xff000000 /* Alpha bit mask. */
#endif
);
if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL))
return;
/* Set alpha mod. */
ret = SDL_SetSurfaceAlphaMod( face, 100 );
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
return;
/* Steps to take. */
ni = testsur->w - face->w;
nj = testsur->h - face->h;
/* Constant values. */
rect.w = face->w;
rect.h = face->h;
/* Test None. */
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_NONE ))
return;
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_NONE).",
surface_compare( testsur, &img_blendNone, 0 )==0 ))
return;
/* Test Blend. */
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_BLEND ))
return;
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_BLEND).",
surface_compare( testsur, &img_blendBlend, 0 )==0 ))
return;
/* Test Add. */
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_ADD ))
return;
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_ADD).",
surface_compare( testsur, &img_blendAdd, 0 )==0 ))
return;
/* Test Mod. */
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_MOD ))
return;
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_MOD).",
surface_compare( testsur, &img_blendMod, 0 )==0 ))
return;
/* Clear surface. */
ret = SDL_FillRect( testsur, NULL,
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
if (SDL_ATassert( "SDL_FillRect", ret == 0))
return;
/* Loop blit. */
for (j=0; j <= nj; j+=4) {
for (i=0; i <= ni; i+=4) {
/* Set colour mod. */
ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j );
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
return;
/* Set alpha mod. */
ret = SDL_SetSurfaceAlphaMod( face, (100/ni)*i );
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
return;
/* Crazy blending mode magic. */
mode = (i/4*j/4) % 4;
if (mode==0) mode = SDL_BLENDMODE_NONE;
else if (mode==1) mode = SDL_BLENDMODE_BLEND;
else if (mode==2) mode = SDL_BLENDMODE_ADD;
else if (mode==3) mode = SDL_BLENDMODE_MOD;
ret = SDL_SetSurfaceBlendMode( face, mode );
if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0))
return;
/* Blitting. */
rect.x = i;
rect.y = j;
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
return;
}
}
/* Check to see if matches. */
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLEND_*).",
surface_compare( testsur, &img_blendAll, 0 )==0 ))
return;
/* Clean up. */
SDL_FreeSurface( face );
SDL_ATend();
}
/**
* @brief Runs all the tests on the surface.
*
* @param testsur Surface to run tests on.
*/
void surface_runTests( SDL_Surface *testsur )
{
/* Software surface blitting. */
surface_testBlit( testsur );
surface_testBlitBlend( testsur );
}
/**
* @brief Entry point.
*/
#ifdef TEST_STANDALONE
int main( int argc, const char *argv[] )
{
(void) argc;
(void) argv;
#else /* TEST_STANDALONE */
int test_surface (void)
{
#endif /* TEST_STANDALONE */
int ret;
SDL_Surface *testsur;
SDL_ATinit( "SDL_Surface" );
SDL_ATbegin( "Initializing" );
/* Initializes the SDL subsystems. */
ret = SDL_Init(0);
if (SDL_ATassert( "SDL_Init(0)", ret == 0))
goto err;
/* Now run on the video mode. */
ret = SDL_InitSubSystem( SDL_INIT_VIDEO );
if (SDL_ATassert( "SDL_InitSubSystem( SDL_INIT_VIDEO )", ret == 0))
goto err;
/*
* Surface on surface tests.
*/
/* Create the test surface. */
testsur = SDL_CreateRGBSurface( 0, 80, 60, 32,
RMASK, GMASK, BMASK, AMASK );
if (SDL_ATassert( "SDL_CreateRGBSurface", testsur != NULL))
goto err;
SDL_ATend();
/* Run surface on surface tests. */
surface_testLoad( testsur );
surface_runTests( testsur );
/* Clean up. */
SDL_FreeSurface( testsur );
/* Exit SDL. */
SDL_Quit();
return SDL_ATfinish();
err:
return SDL_ATfinish();
}

View File

@@ -1,18 +0,0 @@
/**
* Part of SDL test suite.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#ifndef _TEST_SURFACE
# define _TEST_SURFACE
int test_surface (void);
#endif /* _TEST_SURFACE */

View File

@@ -1,185 +0,0 @@
/*
* SDL test suite framework code.
*
* Written by Edgar Simo "bobbens"
*
* Released under Public Domain.
*/
#include "SDL.h"
#include "SDL_at.h"
#include "platform/platform.h"
#include "rwops/rwops.h"
#include "rect/rect.h"
#include "surface/surface.h"
#include "render/render.h"
#include "audio/audio.h"
#if defined(WIN32)
#define NO_GETOPT
#endif
#if defined(__QNXNTO__)
#define NO_GETOPT_LONG 1
#endif /* __QNXNTO__ */
#include <stdio.h> /* printf */
#include <stdlib.h> /* exit */
#ifndef NO_GETOPT
#include <unistd.h> /* getopt */
#if !defined(NO_GETOPT_LONG)
#include <getopt.h> /* getopt_long */
#endif /* !NO_GETOPT_LONG */
#endif /* !NO_GETOPT */
/*
* Tests to run.
*/
static int run_manual = 0; /**< Run manual tests. */
/* Manual. */
/* Automatic. */
static int run_platform = 1; /**< Run platform tests. */
static int run_rwops = 1; /**< Run RWops tests. */
static int run_rect = 1; /**< Run rect tests. */
static int run_surface = 1; /**< Run surface tests. */
static int run_render = 1; /**< Run render tests. */
static int run_audio = 1; /**< Run audio tests. */
/*
* Prototypes.
*/
static void print_usage( const char *name );
static void parse_options( int argc, char *argv[] );
/**
* @brief Displays program usage.
*/
static void print_usage( const char *name )
{
printf("Usage: %s [OPTIONS]\n", name);
printf("Options are:\n");
printf(" -m, --manual enables tests that require user interaction\n");
printf(" --noplatform do not run the platform tests\n");
printf(" --norwops do not run the rwops tests\n");
printf(" --norect do not run the rect tests\n");
printf(" --nosurface do not run the surface tests\n");
printf(" --norender do not run the render tests\n");
printf(" --noaudio do not run the audio tests\n");
printf(" -v, --verbose increases verbosity level by 1 for each -v\n");
printf(" -q, --quiet only displays errors\n");
printf(" -h, --help display this message and exit\n");
}
/**
* @brief Handles the options.
*/
static void parse_options( int argc, char *argv[] )
{
int i;
for (i = 1; i < argc; ++i) {
const char *arg = argv[i];
if (SDL_strcmp(arg, "-m") == 0 || SDL_strcmp(arg, "--manual") == 0) {
run_manual = 1;
continue;
}
if (SDL_strcmp(arg, "-v") == 0 || SDL_strcmp(arg, "--verbose") == 0) {
int level;
SDL_ATgeti( SDL_AT_VERBOSE, &level );
SDL_ATseti( SDL_AT_VERBOSE, level+1 );
continue;
}
if (SDL_strcmp(arg, "-q") == 0 || SDL_strcmp(arg, "--quiet") == 0) {
SDL_ATseti( SDL_AT_QUIET, 1 );
SDL_setenv("SDL_ASSERT", "abort", 0);
continue;
}
if (SDL_strcmp(arg, "--noplatform") == 0) {
run_platform = 0;
continue;
}
if (SDL_strcmp(arg, "--norwops") == 0) {
run_rwops = 0;
continue;
}
if (SDL_strcmp(arg, "--norect") == 0) {
run_rect = 0;
continue;
}
if (SDL_strcmp(arg, "--nosurface") == 0) {
run_surface = 0;
continue;
}
if (SDL_strcmp(arg, "--norender") == 0) {
run_render = 0;
continue;
}
if (SDL_strcmp(arg, "--noaudio") == 0) {
run_audio = 0;
continue;
}
/* Print help and exit! */
print_usage( argv[0] );
exit(EXIT_FAILURE);
}
}
/**
* @brief Main entry point.
*/
int main( int argc, char *argv[] )
{
int failed;
const char *rev;
SDL_version ver;
/* Get options. */
parse_options( argc, argv );
/* Defaults. */
failed = 0;
/* Print some text if verbose. */
SDL_GetVersion( &ver );
rev = SDL_GetRevision();
SDL_ATprintVerbose( 1, "Running tests with SDL %d.%d.%d revision %s\n",
ver.major, ver.minor, ver.patch, rev );
/* Automatic tests. */
if (run_platform)
failed += test_platform();
if (run_rwops)
failed += test_rwops();
if (run_rect)
failed += test_rect();
if (run_surface)
failed += test_surface();
if (run_render)
failed += test_render();
if (run_audio)
failed += test_audio();
/* Manual tests. */
if (run_manual) {
}
/* Display more information if failed. */
if (failed > 0) {
SDL_ATprintErr( "Tests run with SDL %d.%d.%d revision %d\n",
ver.major, ver.minor, ver.patch, rev );
SDL_ATprintErr( "System is running %s and is %s endian\n",
SDL_GetPlatform(),
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
"little"
#else
"big"
#endif
);
}
return failed;
}

View File

@@ -1,158 +0,0 @@
/* Simple program: Loop, watching keystrokes
Note that you need to call SDL_PollEvent() or SDL_WaitEvent() to
pump the event loop and catch keystrokes.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SDL.h"
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static void
quit(int rc)
{
SDL_Quit();
exit(rc);
}
static void
print_modifiers(void)
{
int mod;
printf(" modifiers:");
mod = SDL_GetModState();
if (!mod) {
printf(" (none)");
return;
}
if (mod & KMOD_LSHIFT)
printf(" LSHIFT");
if (mod & KMOD_RSHIFT)
printf(" RSHIFT");
if (mod & KMOD_LCTRL)
printf(" LCTRL");
if (mod & KMOD_RCTRL)
printf(" RCTRL");
if (mod & KMOD_LALT)
printf(" LALT");
if (mod & KMOD_RALT)
printf(" RALT");
if (mod & KMOD_LGUI)
printf(" LGUI");
if (mod & KMOD_RGUI)
printf(" RGUI");
if (mod & KMOD_NUM)
printf(" NUM");
if (mod & KMOD_CAPS)
printf(" CAPS");
if (mod & KMOD_MODE)
printf(" MODE");
}
static void
PrintKey(SDL_Keysym * sym, SDL_bool pressed, SDL_bool repeat)
{
/* Print the keycode, name and state */
if (sym->sym) {
printf("Key %s: scancode %d = %s, keycode 0x%08X = %s ",
pressed ? "pressed " : "released",
sym->scancode,
SDL_GetScancodeName(sym->scancode),
sym->sym, SDL_GetKeyName(sym->sym));
} else {
printf("Unknown Key (scancode %d = %s) %s ",
sym->scancode,
SDL_GetScancodeName(sym->scancode),
pressed ? "pressed" : "released");
}
/* Print the translated character, if one exists */
if (sym->unicode) {
/* Is it a control-character? */
if (sym->unicode < ' ') {
printf(" (^%c)", sym->unicode + '@');
} else {
#ifdef UNICODE
printf(" (%c)", sym->unicode);
#else
/* This is a Latin-1 program, so only show 8-bits */
if (!(sym->unicode & 0xFF00))
printf(" (%c)", sym->unicode);
else
printf(" (0x%X)", sym->unicode);
#endif
}
}
print_modifiers();
if (repeat) {
printf(" (repeat)");
}
printf("\n");
}
static void
PrintText(char *text)
{
printf("Text: %s\n", text);
}
int
main(int argc, char *argv[])
{
SDL_Event event;
int done;
Uint32 videoflags;
/* Initialize SDL */
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
videoflags = SDL_SWSURFACE;
while (argc > 1) {
--argc;
if (argv[argc] && !strcmp(argv[argc], "-fullscreen")) {
videoflags |= SDL_FULLSCREEN;
} else {
fprintf(stderr, "Usage: %s [-fullscreen]\n", argv[0]);
quit(1);
}
}
/* Set 640x480 video mode */
if (SDL_SetVideoMode(640, 480, 0, videoflags) == NULL) {
fprintf(stderr, "Couldn't set 640x480 video mode: %s\n",
SDL_GetError());
quit(2);
}
/* Watch keystrokes */
done = 0;
while (!done) {
/* Check for events */
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
case SDL_KEYUP:
PrintKey(&event.key.keysym, event.key.state, event.key.repeat);
break;
case SDL_TEXTINPUT:
PrintText(event.text.text);
break;
case SDL_MOUSEBUTTONDOWN:
/* Any button press quits the app... */
case SDL_QUIT:
done = 1;
break;
default:
break;
}
}
SDL_Quit();
return (0);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,77 +0,0 @@
/* A simple test program framework */
#define SDL_NO_COMPAT
#include "SDL.h"
#define DEFAULT_WINDOW_WIDTH 640
#define DEFAULT_WINDOW_HEIGHT 480
#define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004
#define VERBOSE_EVENT 0x00000008
#define VERBOSE_AUDIO 0x00000010
typedef struct
{
/* SDL init flags */
char **argv;
Uint32 flags;
Uint32 verbose;
/* Video info */
const char *videodriver;
int display;
const char *window_title;
const char *window_icon;
Uint32 window_flags;
int window_x;
int window_y;
int window_w;
int window_h;
int depth;
int refresh_rate;
int num_windows;
SDL_Window **windows;
/* Renderer info */
const char *renderdriver;
Uint32 render_flags;
SDL_bool skip_renderer;
SDL_Renderer **renderers;
/* Audio info */
const char *audiodriver;
SDL_AudioSpec audiospec;
/* GL settings */
int gl_red_size;
int gl_green_size;
int gl_blue_size;
int gl_alpha_size;
int gl_buffer_size;
int gl_depth_size;
int gl_stencil_size;
int gl_double_buffer;
int gl_accum_red_size;
int gl_accum_green_size;
int gl_accum_blue_size;
int gl_accum_alpha_size;
int gl_stereo;
int gl_multisamplebuffers;
int gl_multisamplesamples;
int gl_retained_backing;
int gl_accelerated;
int gl_major_version;
int gl_minor_version;
} CommonState;
extern CommonState *CommonCreateState(char **argv, Uint32 flags);
extern int CommonArg(CommonState * state, int index);
extern const char *CommonUsage(CommonState * state);
extern SDL_bool CommonInit(CommonState * state);
extern void CommonEvent(CommonState * state, SDL_Event * event, int *done);
extern void CommonQuit(CommonState * state);
/* vi: set ts=4 sw=4 expandtab: */

File diff suppressed because it is too large Load Diff

View File

@@ -1,150 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
dnl Detect the canonical build and host environments
AC_CONFIG_AUX_DIRS($srcdir/../build-scripts)
AC_CANONICAL_HOST
dnl Check for tools
AC_PROG_CC
dnl Check for compiler environment
AC_C_CONST
dnl Figure out which math library to use
case "$host" in
*-*-cygwin* | *-*-mingw32*)
EXE=".exe"
MATHLIB=""
SYS_GL_LIBS="-lopengl32"
;;
*-*-beos* | *-*-haiku*)
EXE=""
MATHLIB=""
SYS_GL_LIBS="-lGL"
;;
*-*-darwin* )
EXE=""
MATHLIB=""
SYS_GL_LIBS="-Wl,-framework,OpenGL"
;;
*-*-aix*)
EXE=""
if test x$ac_cv_prog_gcc = xyes; then
CFLAGS="-mthreads"
fi
SYS_GL_LIBS=""
;;
*-*-mint*)
EXE=""
MATHLIB=""
AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
if test "x$OSMESA_CONFIG" = "xyes"; then
OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
OSMESA_LIBS=`$OSMESA_CONFIG --libs`
CFLAGS="$CFLAGS $OSMESA_CFLAGS"
SYS_GL_LIBS="$OSMESA_LIBS"
else
SYS_GL_LIBS="-lOSMesa"
fi
;;
*-*-qnx*)
EXE=""
MATHLIB=""
SYS_GL_LIBS="-lGLES_CM"
;;
*)
EXE=""
MATHLIB="-lm"
SYS_GL_LIBS="-lGL"
;;
esac
AC_SUBST(EXE)
AC_SUBST(MATHLIB)
dnl Check for SDL
SDL_VERSION=1.3.0
AM_PATH_SDL($SDL_VERSION,
:,
AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
)
CFLAGS="$CFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
dnl Check for X11 path, needed for OpenGL on some systems
AC_PATH_X
if test x$have_x = xyes; then
if test x$ac_x_includes = xno || test x$ac_x_includes = x; then
:
else
CFLAGS="$CFLAGS -I$ac_x_includes"
fi
if test x$ac_x_libraries = xno || test x$ac_x_libraries = x; then
:
else
XPATH="-L$ac_x_libraries"
fi
fi
dnl Check for OpenGL
AC_MSG_CHECKING(for OpenGL support)
have_opengl=no
AC_TRY_COMPILE([
#include "SDL_opengl.h"
],[
],[
have_opengl=yes
])
AC_MSG_RESULT($have_opengl)
dnl Check for OpenGL ES
AC_MSG_CHECKING(for OpenGL ES support)
have_opengles=no
AC_TRY_COMPILE([
#if defined (__QNXNTO__)
#include <GLES/gl.h>
#elif defined (__IPHONEOS__)
#include <OpenGLES/ES1/gl.h>
#else
#error "No OpenGL ES support"
#endif /* __QNXNTO__ */
],[
],[
have_opengles=yes
])
AC_MSG_RESULT($have_opengles)
if test x$have_opengl = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGL"
GLLIB="$XPATH $SYS_GL_LIBS"
elif test x$have_opengles = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGLES"
GLLIB="$XPATH $SYS_GL_LIBS"
else
GLLIB=""
fi
AC_SUBST(GLLIB)
dnl Check for SDL_ttf
AC_MSG_CHECKING(for SDL_ttf)
have_SDL_ttf=no
AC_TRY_COMPILE([
#include "SDL_ttf.h"
],[
],[
have_SDL_ttf=yes
])
AC_MSG_RESULT($have_SDL_ttf)
if test x$have_SDL_ttf = xyes; then
CFLAGS="$CFLAGS -DHAVE_SDL_TTF"
SDL_TTF_LIB="-lSDL_ttf"
fi
AC_SUBST(SDL_TTF_LIB)
dnl Finally create all the generated files
AC_OUTPUT([Makefile])

View File

@@ -1,110 +0,0 @@
#!/bin/sh
#
# Build Universal binaries on Mac OS X, thanks Ryan!
#
# Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf ppc x86
# PowerPC compiler flags (10.2 runtime compatibility)
GCC_COMPILE_PPC="gcc-3.3 -arch ppc \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1020 \
-nostdinc \
-F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \
-I/Developer/SDKs/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \
-isystem /Developer/SDKs/MacOSX10.2.8.sdk/usr/include"
GCC_LINK_PPC="\
-L/Developer/SDKs/MacOSX10.2.8.sdk/usr/lib/gcc/darwin/3.3 \
-F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk"
# Intel compiler flags (10.4 runtime compatibility)
GCC_COMPILE_X86="gcc-4.0 -arch i386 -mmacosx-version-min=10.4 \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
-nostdinc \
-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
-I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1/include \
-isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
GCC_LINK_X86="\
-L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.0 \
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
# Output both PowerPC and Intel object files
args="$*"
compile=yes
link=yes
while test x$1 != x; do
case $1 in
--version) exec gcc $1;;
-v) exec gcc $1;;
-V) exec gcc $1;;
-print-prog-name=*) exec gcc $1;;
-print-search-dirs) exec gcc $1;;
-E) GCC_COMPILE_PPC="$GCC_COMPILE_PPC -E"
GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
compile=no; link=no;;
-c) link=no;;
-o) output=$2;;
*.c|*.cc|*.cpp|*.S) source=$1;;
esac
shift
done
if test x$link = xyes; then
GCC_COMPILE_PPC="$GCC_COMPILE_PPC $GCC_LINK_PPC"
GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
fi
if test x"$output" = x; then
if test x$link = xyes; then
output=a.out
elif test x$compile = xyes; then
output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o
fi
fi
if test x"$output" != x; then
dir=ppc/`dirname $output`
if test -d $dir; then
:
else
mkdir -p $dir
fi
fi
set -- $args
while test x$1 != x; do
if test -f "ppc/$1" && test "$1" != "$output"; then
ppc_args="$ppc_args ppc/$1"
else
ppc_args="$ppc_args $1"
fi
shift
done
$GCC_COMPILE_PPC $ppc_args || exit $?
if test x"$output" != x; then
cp $output ppc/$output
fi
if test x"$output" != x; then
dir=x86/`dirname $output`
if test -d $dir; then
:
else
mkdir -p $dir
fi
fi
set -- $args
while test x$1 != x; do
if test -f "x86/$1" && test "$1" != "$output"; then
x86_args="$x86_args x86/$1"
else
x86_args="$x86_args $1"
fi
shift
done
$GCC_COMPILE_X86 $x86_args || exit $?
if test x"$output" != x; then
cp $output x86/$output
fi
if test x"$output" != x; then
lipo -create -o $output ppc/$output x86/$output
fi

View File

@@ -1,248 +0,0 @@
/* Simple program: Fill a colormap with gray and stripe it down the screen */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "SDL.h"
#ifdef TEST_VGA16 /* Define this if you want to test VGA 16-color video modes */
#define NUM_COLORS 16
#else
#define NUM_COLORS 256
#endif
/* Draw a randomly sized and colored box centered about (X,Y) */
void
DrawBox(SDL_Surface * screen, int X, int Y, int width, int height)
{
static unsigned int seeded = 0;
SDL_Rect area;
Uint32 color;
Uint32 randc;
/* Seed the random number generator */
if (seeded == 0) {
srand((unsigned int)time(NULL));
seeded = 1;
}
/* Get the bounds of the rectangle */
area.w = (rand() % width);
area.h = (rand() % height);
area.x = X - (area.w / 2);
area.y = Y - (area.h / 2);
randc = (rand() % NUM_COLORS);
if (screen->format->BytesPerPixel == 1) {
color = randc;
} else {
color = SDL_MapRGB(screen->format, randc, randc, randc);
}
/* Do it! */
SDL_FillRect(screen, &area, color);
if (screen->flags & SDL_DOUBLEBUF) {
SDL_Flip(screen);
} else {
SDL_UpdateRects(screen, 1, &area);
}
}
void
DrawBackground(SDL_Surface * screen)
{
int i, j, k;
Uint8 *buffer;
Uint16 *buffer16;
Uint16 color;
Uint8 gradient;
/* Set the surface pixels and refresh! */
/* Use two loops in case the surface is double-buffered (both sides) */
for (j = 0; j < 2; ++j) {
if (SDL_LockSurface(screen) < 0) {
fprintf(stderr, "Couldn't lock display surface: %s\n",
SDL_GetError());
return;
}
buffer = (Uint8 *) screen->pixels;
if (screen->format->BytesPerPixel != 2) {
for (i = 0; i < screen->h; ++i) {
memset(buffer, (i * (NUM_COLORS - 1)) / screen->h,
screen->w * screen->format->BytesPerPixel);
buffer += screen->pitch;
}
} else {
for (i = 0; i < screen->h; ++i) {
gradient = ((i * (NUM_COLORS - 1)) / screen->h);
color =
SDL_MapRGB(screen->format, gradient, gradient, gradient);
buffer16 = (Uint16 *) buffer;
for (k = 0; k < screen->w; k++) {
*(buffer16 + k) = color;
}
buffer += screen->pitch;
}
}
SDL_UnlockSurface(screen);
if (screen->flags & SDL_DOUBLEBUF) {
SDL_Flip(screen);
} else {
SDL_UpdateRect(screen, 0, 0, 0, 0);
break;
}
}
}
SDL_Surface *
CreateScreen(Uint16 w, Uint16 h, Uint8 bpp, Uint32 flags)
{
SDL_Surface *screen;
int i;
SDL_Color palette[NUM_COLORS];
/* Set the video mode */
screen = SDL_SetVideoMode(w, h, bpp, flags);
if (screen == NULL) {
fprintf(stderr, "Couldn't set display mode: %s\n", SDL_GetError());
return (NULL);
}
fprintf(stderr, "Screen is in %s mode\n",
(screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed");
if (bpp == 8) {
/* Set a gray colormap, reverse order from white to black */
for (i = 0; i < NUM_COLORS; ++i) {
palette[i].r = (NUM_COLORS - 1) - i * (256 / NUM_COLORS);
palette[i].g = (NUM_COLORS - 1) - i * (256 / NUM_COLORS);
palette[i].b = (NUM_COLORS - 1) - i * (256 / NUM_COLORS);
}
SDL_SetColors(screen, palette, 0, NUM_COLORS);
}
return (screen);
}
int
main(int argc, char *argv[])
{
SDL_Surface *screen;
Uint32 videoflags;
int done;
SDL_Event event;
int width, height, bpp;
/* Initialize SDL */
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
exit(1);
}
/* See if we try to get a hardware colormap */
width = 640;
height = 480;
bpp = 8;
videoflags = SDL_SWSURFACE;
while (argc > 1) {
--argc;
if (argv[argc - 1] && (strcmp(argv[argc - 1], "-width") == 0)) {
width = atoi(argv[argc]);
--argc;
} else if (argv[argc - 1]
&& (strcmp(argv[argc - 1], "-height") == 0)) {
height = atoi(argv[argc]);
--argc;
} else if (argv[argc - 1] && (strcmp(argv[argc - 1], "-bpp") == 0)) {
bpp = atoi(argv[argc]);
--argc;
} else if (argv[argc] && (strcmp(argv[argc], "-hw") == 0)) {
videoflags |= SDL_HWSURFACE;
} else if (argv[argc] && (strcmp(argv[argc], "-hwpalette") == 0)) {
videoflags |= SDL_HWPALETTE;
} else if (argv[argc] && (strcmp(argv[argc], "-flip") == 0)) {
videoflags |= SDL_DOUBLEBUF;
} else if (argv[argc] && (strcmp(argv[argc], "-noframe") == 0)) {
videoflags |= SDL_NOFRAME;
} else if (argv[argc] && (strcmp(argv[argc], "-resize") == 0)) {
videoflags |= SDL_RESIZABLE;
} else if (argv[argc] && (strcmp(argv[argc], "-fullscreen") == 0)) {
videoflags |= SDL_FULLSCREEN;
} else {
fprintf(stderr,
"Usage: %s [-width] [-height] [-bpp] [-hw] [-hwpalette] [-flip] [-noframe] [-fullscreen] [-resize]\n",
argv[0]);
exit(1);
}
}
/* Set a video mode */
screen = CreateScreen(width, height, bpp, videoflags);
if (screen == NULL) {
exit(2);
}
DrawBackground(screen);
/* Wait for a keystroke */
done = 0;
while (!done && SDL_WaitEvent(&event)) {
switch (event.type) {
case SDL_MOUSEBUTTONDOWN:
DrawBox(screen, event.button.x, event.button.y, width, height);
break;
case SDL_KEYDOWN:
/* Ignore ALT-TAB for windows */
if ((event.key.keysym.sym == SDLK_LALT) ||
(event.key.keysym.sym == SDLK_TAB)) {
break;
}
/* Center the mouse on <SPACE> */
if (event.key.keysym.sym == SDLK_SPACE) {
SDL_WarpMouse(width / 2, height / 2);
break;
}
/* Toggle fullscreen mode on <RETURN> */
if (event.key.keysym.sym == SDLK_RETURN) {
videoflags ^= SDL_FULLSCREEN;
screen = CreateScreen(screen->w, screen->h,
screen->format->BitsPerPixel,
videoflags);
if (screen == NULL) {
fprintf(stderr, "Couldn't toggle fullscreen mode\n");
done = 1;
}
DrawBackground(screen);
break;
}
/* Any other key quits the application... */
case SDL_QUIT:
done = 1;
break;
case SDL_VIDEOEXPOSE:
DrawBackground(screen);
break;
case SDL_VIDEORESIZE:
printf("Screen resized to %dx%d\n", event.resize.w,
event.resize.h);
screen =
CreateScreen(event.resize.w, event.resize.h,
screen->format->BitsPerPixel, videoflags);
if (screen == NULL) {
fprintf(stderr, "Couldn't resize video mode\n");
done = 1;
}
DrawBackground(screen);
break;
default:
break;
}
}
SDL_Quit();
return (0);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

View File

@@ -1,117 +0,0 @@
/* Program to load a wave file and loop playing it using SDL sound */
/* loopwaves.c is much more robust in handling WAVE files --
This is only for simple WAVEs
*/
#include "SDL_config.h"
#include <stdio.h>
#include <stdlib.h>
#if HAVE_SIGNAL_H
#include <signal.h>
#endif
#include "SDL.h"
#include "SDL_audio.h"
struct
{
SDL_AudioSpec spec;
Uint8 *sound; /* Pointer to wave data */
Uint32 soundlen; /* Length of wave data */
int soundpos; /* Current play position */
} wave;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static void
quit(int rc)
{
SDL_Quit();
exit(rc);
}
void SDLCALL
fillerup(void *unused, Uint8 * stream, int len)
{
Uint8 *waveptr;
int waveleft;
/* Set up the pointers */
waveptr = wave.sound + wave.soundpos;
waveleft = wave.soundlen - wave.soundpos;
/* Go! */
while (waveleft <= len) {
SDL_memcpy(stream, waveptr, waveleft);
stream += waveleft;
len -= waveleft;
waveptr = wave.sound;
waveleft = wave.soundlen;
wave.soundpos = 0;
}
SDL_memcpy(stream, waveptr, len);
wave.soundpos += len;
}
static int done = 0;
void
poked(int sig)
{
done = 1;
}
int
main(int argc, char *argv[])
{
/* Load the SDL library */
if (SDL_Init(SDL_INIT_AUDIO) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
if (argv[1] == NULL) {
argv[1] = "sample.wav";
}
/* Load the wave file into memory */
if (SDL_LoadWAV(argv[1], &wave.spec, &wave.sound, &wave.soundlen) == NULL) {
fprintf(stderr, "Couldn't load %s: %s\n", argv[1], SDL_GetError());
quit(1);
}
wave.spec.callback = fillerup;
#if HAVE_SIGNAL_H
/* Set the signals */
#ifdef SIGHUP
signal(SIGHUP, poked);
#endif
signal(SIGINT, poked);
#ifdef SIGQUIT
signal(SIGQUIT, poked);
#endif
signal(SIGTERM, poked);
#endif /* HAVE_SIGNAL_H */
/* Initialize fillerup() variables */
if (SDL_OpenAudio(&wave.spec, NULL) < 0) {
fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
SDL_FreeWAV(wave.sound);
quit(2);
}
printf("Using audio driver: %s\n", SDL_GetCurrentAudioDriver());
/* Let the audio run */
SDL_PauseAudio(0);
while (!done && (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING))
SDL_Delay(1000);
/* Clean up on signal */
SDL_CloseAudio();
SDL_FreeWAV(wave.sound);
SDL_Quit();
return (0);
}

Binary file not shown.

View File

@@ -1,132 +0,0 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
DATA := data
INCLUDES := include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb -mthumb-interwork
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS := -save-temps -g -Wall -O0\
-mcpu=arm9tdmi -mtune=arm9tdmi \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9 -D__NDS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lSDL -lfat -lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba
#---------------------------------------------------------------------------------
else
DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba : $(OUTPUT).nds
$(OUTPUT).nds : $(OUTPUT).arm9
$(OUTPUT).arm9 : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES)
#---------------------------------------------------------------------------------
%.pcx.o : %.pcx
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

View File

@@ -1,96 +0,0 @@
#include <SDL/SDL.h>
#if defined(NDS) || defined(__NDS__) || defined (__NDS)
#include <nds.h>
#include <fat.h>
#else
#define swiWaitForVBlank()
#define consoleDemoInit()
#define fatInitDefault()
#define RGB15(r,g,b) SDL_MapRGB(screen->format,((r)<<3),((g)<<3),((b)<<3))
#endif
void
splash(SDL_Surface * screen, int s)
{
SDL_Surface *logo;
SDL_Rect area = { 0, 0, 256, 192 };
logo = SDL_LoadBMP("sdl.bmp");
if (!logo) {
printf("Couldn't splash.\n");
return;
}
/*logo->flags &= ~SDL_PREALLOC; */
SDL_BlitSurface(logo, NULL, screen, &area);
SDL_Flip(screen);
while (s-- > 0) {
int i = 60;
while (--i)
swiWaitForVBlank();
}
}
int
main(void)
{
SDL_Surface *screen;
SDL_Joystick *stick;
SDL_Event event;
SDL_Rect rect = { 0, 0, 256, 192 };
int i;
consoleDemoInit();
puts("Hello world! Initializing FAT...");
fatInitDefault();
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
puts("# error initializing SDL");
puts(SDL_GetError());
return 1;
}
puts("* initialized SDL");
screen = SDL_SetVideoMode(256, 192, 15, SDL_SWSURFACE);
if (!screen) {
puts("# error setting video mode");
puts(SDL_GetError());
return 2;
}
screen->flags &= ~SDL_PREALLOC;
puts("* set video mode");
stick = SDL_JoystickOpen(0);
if (stick == NULL) {
puts("# error opening joystick");
puts(SDL_GetError());
// return 3;
}
puts("* opened joystick");
/*splash(screen, 3); */
SDL_FillRect(screen, &rect, RGB15(0, 0, 31) | 0x8000);
SDL_Flip(screen);
while (1)
while (SDL_PollEvent(&event))
switch (event.type) {
case SDL_JOYBUTTONDOWN:
SDL_FillRect(screen, &rect, (u16) rand() | 0x8000);
SDL_Flip(screen);
if (rect.w > 8) {
rect.x += 4;
rect.y += 3;
rect.w -= 8;
rect.h -= 6;
}
printf("button %d pressed at %d ticks\n",
event.jbutton.button, SDL_GetTicks());
break;
case SDL_QUIT:
SDL_Quit();
return 0;
default:
break;
}
return 0;

View File

@@ -1,132 +0,0 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
DATA := data
INCLUDES := include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb -mthumb-interwork
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS := -save-temps -g -Wall -O0\
-mcpu=arm9tdmi -mtune=arm9tdmi \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9 -D__NDS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lSDL -lfat -lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba
#---------------------------------------------------------------------------------
else
DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba : $(OUTPUT).nds
$(OUTPUT).nds : $(OUTPUT).arm9
$(OUTPUT).arm9 : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES)
#---------------------------------------------------------------------------------
%.pcx.o : %.pcx
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

View File

@@ -1,965 +0,0 @@
/* A simple test program framework */
#include <stdio.h>
#include "common.h"
#define VIDEO_USAGE \
"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--display %d] [--fullscreen | --windows N] [--title title] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]"
#define AUDIO_USAGE \
"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
CommonState *
CommonCreateState(char **argv, Uint32 flags)
{
CommonState *state = SDL_calloc(1, sizeof(*state));
if (!state) {
SDL_OutOfMemory();
return NULL;
}
/* Initialize some defaults */
state->argv = argv;
state->flags = flags;
state->window_title = argv[0];
state->window_flags = SDL_WINDOW_SHOWN;
state->window_x = SDL_WINDOWPOS_UNDEFINED;
state->window_y = SDL_WINDOWPOS_UNDEFINED;
state->window_w = 256;
state->window_h = 192;
state->num_windows = 1;
state->audiospec.freq = 22050;
state->audiospec.format = AUDIO_S16;
state->audiospec.channels = 2;
state->audiospec.samples = 2048;
return state;
}
int
CommonArg(CommonState * state, int index)
{
char **argv = state->argv;
if (SDL_strcasecmp(argv[index], "--video") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->videodriver = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--renderer") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->renderdriver = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--info") == 0) {
++index;
if (!argv[index]) {
return -1;
}
if (SDL_strcasecmp(argv[index], "all") == 0) {
state->verbose |=
(VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER |
VERBOSE_EVENT);
return 2;
}
if (SDL_strcasecmp(argv[index], "video") == 0) {
state->verbose |= VERBOSE_VIDEO;
return 2;
}
if (SDL_strcasecmp(argv[index], "modes") == 0) {
state->verbose |= VERBOSE_MODES;
return 2;
}
if (SDL_strcasecmp(argv[index], "render") == 0) {
state->verbose |= VERBOSE_RENDER;
return 2;
}
if (SDL_strcasecmp(argv[index], "event") == 0) {
state->verbose |= VERBOSE_EVENT;
return 2;
}
return -1;
}
if (SDL_strcasecmp(argv[index], "--display") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->display = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) {
state->window_flags |= SDL_WINDOW_FULLSCREEN;
state->num_windows = 1;
return 1;
}
if (SDL_strcasecmp(argv[index], "--windows") == 0) {
++index;
if (!argv[index] || !SDL_isdigit(*argv[index])) {
return -1;
}
if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
state->num_windows = SDL_atoi(argv[index]);
}
return 2;
}
if (SDL_strcasecmp(argv[index], "--title") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->window_title = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--center") == 0) {
state->window_x = SDL_WINDOWPOS_CENTERED;
state->window_y = SDL_WINDOWPOS_CENTERED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--position") == 0) {
char *x, *y;
++index;
if (!argv[index]) {
return -1;
}
x = argv[index];
y = argv[index];
while (*y && *y != ',') {
++y;
}
if (!*y) {
return -1;
}
*y++ = '\0';
state->window_x = SDL_atoi(x);
state->window_y = SDL_atoi(y);
return 2;
}
if (SDL_strcasecmp(argv[index], "--geometry") == 0) {
char *w, *h;
++index;
if (!argv[index]) {
return -1;
}
w = argv[index];
h = argv[index];
while (*h && *h != 'x') {
++h;
}
if (!*h) {
return -1;
}
*h++ = '\0';
state->window_w = SDL_atoi(w);
state->window_h = SDL_atoi(h);
return 2;
}
if (SDL_strcasecmp(argv[index], "--depth") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->depth = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--refresh") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->refresh_rate = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--vsync") == 0) {
state->render_flags |= SDL_RENDERER_PRESENTVSYNC;
return 1;
}
if (SDL_strcasecmp(argv[index], "--noframe") == 0) {
state->window_flags |= SDL_WINDOW_BORDERLESS;
return 1;
}
if (SDL_strcasecmp(argv[index], "--resize") == 0) {
state->window_flags |= SDL_WINDOW_RESIZABLE;
return 1;
}
if (SDL_strcasecmp(argv[index], "--minimize") == 0) {
state->window_flags |= SDL_WINDOW_MINIMIZED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--maximize") == 0) {
state->window_flags |= SDL_WINDOW_MAXIMIZED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--grab") == 0) {
state->window_flags |= SDL_WINDOW_INPUT_GRABBED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--rate") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.freq = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--format") == 0) {
++index;
if (!argv[index]) {
return -1;
}
if (SDL_strcasecmp(argv[index], "U8") == 0) {
state->audiospec.format = AUDIO_U8;
return 2;
}
if (SDL_strcasecmp(argv[index], "S8") == 0) {
state->audiospec.format = AUDIO_S8;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16") == 0) {
state->audiospec.format = AUDIO_U16;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16LE") == 0) {
state->audiospec.format = AUDIO_U16LSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16BE") == 0) {
state->audiospec.format = AUDIO_U16MSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16") == 0) {
state->audiospec.format = AUDIO_S16;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16LE") == 0) {
state->audiospec.format = AUDIO_S16LSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16BE") == 0) {
state->audiospec.format = AUDIO_S16MSB;
return 2;
}
return -1;
}
if (SDL_strcasecmp(argv[index], "--channels") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.channels = (Uint8) SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--samples") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.samples = (Uint16) SDL_atoi(argv[index]);
return 2;
}
if ((SDL_strcasecmp(argv[index], "-h") == 0)
|| (SDL_strcasecmp(argv[index], "--help") == 0)) {
/* Print the usage message */
return -1;
}
return 0;
}
const char *
CommonUsage(CommonState * state)
{
switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) {
case SDL_INIT_VIDEO:
return VIDEO_USAGE;
case SDL_INIT_AUDIO:
return AUDIO_USAGE;
case (SDL_INIT_VIDEO | SDL_INIT_AUDIO):
return VIDEO_USAGE " " AUDIO_USAGE;
default:
return "";
}
}
static void
PrintRendererFlag(Uint32 flag)
{
switch (flag) {
case SDL_RENDERER_SINGLEBUFFER:
fprintf(stderr, "SingleBuffer");
break;
case SDL_RENDERER_PRESENTCOPY:
fprintf(stderr, "PresentCopy");
break;
case SDL_RENDERER_PRESENTFLIP2:
fprintf(stderr, "PresentFlip2");
break;
case SDL_RENDERER_PRESENTFLIP3:
fprintf(stderr, "PresentFlip3");
break;
case SDL_RENDERER_PRESENTDISCARD:
fprintf(stderr, "PresentDiscard");
break;
case SDL_RENDERER_PRESENTVSYNC:
fprintf(stderr, "PresentVSync");
break;
case SDL_RENDERER_ACCELERATED:
fprintf(stderr, "Accelerated");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintBlendMode(Uint32 flag)
{
switch (flag) {
case SDL_BLENDMODE_NONE:
fprintf(stderr, "None");
break;
case SDL_BLENDMODE_MASK:
fprintf(stderr, "Mask");
break;
case SDL_BLENDMODE_BLEND:
fprintf(stderr, "Blend");
break;
case SDL_BLENDMODE_ADD:
fprintf(stderr, "Add");
break;
case SDL_BLENDMODE_MOD:
fprintf(stderr, "Mod");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintScaleMode(Uint32 flag)
{
switch (flag) {
case SDL_TEXTURESCALEMODE_NONE:
fprintf(stderr, "None");
break;
case SDL_TEXTURESCALEMODE_FAST:
fprintf(stderr, "Fast");
break;
case SDL_TEXTURESCALEMODE_SLOW:
fprintf(stderr, "Slow");
break;
case SDL_TEXTURESCALEMODE_BEST:
fprintf(stderr, "Best");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintPixelFormat(Uint32 format)
{
switch (format) {
case SDL_PIXELFORMAT_UNKNOWN:
fprintf(stderr, "Unknwon");
break;
case SDL_PIXELFORMAT_INDEX1LSB:
fprintf(stderr, "Index1LSB");
break;
case SDL_PIXELFORMAT_INDEX1MSB:
fprintf(stderr, "Index1MSB");
break;
case SDL_PIXELFORMAT_INDEX4LSB:
fprintf(stderr, "Index4LSB");
break;
case SDL_PIXELFORMAT_INDEX4MSB:
fprintf(stderr, "Index4MSB");
break;
case SDL_PIXELFORMAT_INDEX8:
fprintf(stderr, "Index8");
break;
case SDL_PIXELFORMAT_RGB332:
fprintf(stderr, "RGB332");
break;
case SDL_PIXELFORMAT_RGB444:
fprintf(stderr, "RGB444");
break;
case SDL_PIXELFORMAT_RGB555:
fprintf(stderr, "RGB555");
break;
case SDL_PIXELFORMAT_ARGB4444:
fprintf(stderr, "ARGB4444");
break;
case SDL_PIXELFORMAT_ARGB1555:
fprintf(stderr, "ARGB1555");
break;
case SDL_PIXELFORMAT_RGB565:
fprintf(stderr, "RGB565");
break;
case SDL_PIXELFORMAT_RGB24:
fprintf(stderr, "RGB24");
break;
case SDL_PIXELFORMAT_BGR24:
fprintf(stderr, "BGR24");
break;
case SDL_PIXELFORMAT_RGB888:
fprintf(stderr, "RGB888");
break;
case SDL_PIXELFORMAT_BGR888:
fprintf(stderr, "BGR888");
break;
case SDL_PIXELFORMAT_ARGB8888:
fprintf(stderr, "ARGB8888");
break;
case SDL_PIXELFORMAT_RGBA8888:
fprintf(stderr, "RGBA8888");
break;
case SDL_PIXELFORMAT_ABGR8888:
fprintf(stderr, "ABGR8888");
break;
case SDL_PIXELFORMAT_BGRA8888:
fprintf(stderr, "BGRA8888");
break;
case SDL_PIXELFORMAT_ARGB2101010:
fprintf(stderr, "ARGB2101010");
break;
case SDL_PIXELFORMAT_YV12:
fprintf(stderr, "YV12");
break;
case SDL_PIXELFORMAT_IYUV:
fprintf(stderr, "IYUV");
break;
case SDL_PIXELFORMAT_YUY2:
fprintf(stderr, "YUY2");
break;
case SDL_PIXELFORMAT_UYVY:
fprintf(stderr, "UYVY");
break;
case SDL_PIXELFORMAT_YVYU:
fprintf(stderr, "YVYU");
break;
case SDL_PIXELFORMAT_ABGR1555:
fprintf(stderr, "ABGR1555");
break;
case SDL_PIXELFORMAT_BGR555:
fprintf(stderr, "BGR555");
break;
default:
fprintf(stderr, "0x%8.8x", format);
break;
}
}
static void
PrintRenderer(SDL_RendererInfo * info)
{
int i, count;
fprintf(stderr, " Renderer %s:\n", info->name);
fprintf(stderr, " Flags: 0x%8.8X", info->flags);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->flags) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->flags & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintRendererFlag(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Blend: 0x%8.8X", info->blend_modes);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->blend_modes) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->blend_modes & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintBlendMode(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Scale: 0x%8.8X", info->scale_modes);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->scale_modes) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->scale_modes & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintScaleMode(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Texture formats (%d): ", info->num_texture_formats);
for (i = 0; i < (int) info->num_texture_formats; ++i) {
if (i > 0) {
fprintf(stderr, ", ");
}
PrintPixelFormat(info->texture_formats[i]);
}
fprintf(stderr, "\n");
if (info->max_texture_width || info->max_texture_height) {
fprintf(stderr, " Max Texture Size: %dx%d\n",
info->max_texture_width, info->max_texture_height);
}
}
SDL_bool
CommonInit(CommonState * state)
{
int i, j, m, n;
SDL_DisplayMode fullscreen_mode;
if (state->flags & SDL_INIT_VIDEO) {
if (state->verbose & VERBOSE_VIDEO) {
n = SDL_GetNumVideoDrivers();
if (n == 0) {
fprintf(stderr, "No built-in video drivers\n");
} else {
fprintf(stderr, "Built-in video drivers:");
for (i = 0; i < n; ++i) {
if (i > 0) {
fprintf(stderr, ",");
}
fprintf(stderr, " %s", SDL_GetVideoDriver(i));
}
fprintf(stderr, "\n");
}
}
if (SDL_VideoInit(state->videodriver, 0) < 0) {
fprintf(stderr, "Couldn't initialize video driver: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_VIDEO) {
fprintf(stderr, "Video driver: %s\n",
SDL_GetCurrentVideoDriver());
}
if (state->verbose & VERBOSE_MODES) {
SDL_DisplayMode mode;
int bpp;
Uint32 Rmask, Gmask, Bmask, Amask;
n = SDL_GetNumVideoDisplays();
fprintf(stderr, "Number of displays: %d\n", n);
for (i = 0; i < n; ++i) {
fprintf(stderr, "Display %d:\n", i);
SDL_SelectVideoDisplay(i);
SDL_GetDesktopDisplayMode(&mode);
SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask,
&Bmask, &Amask);
fprintf(stderr,
" Current mode: %dx%d@%dHz, %d bits-per-pixel\n",
mode.w, mode.h, mode.refresh_rate, bpp);
if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask);
fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask);
fprintf(stderr, " Blue Mask = 0x%.8x\n", Bmask);
if (Amask)
fprintf(stderr, " Alpha Mask = 0x%.8x\n", Amask);
}
/* Print available fullscreen video modes */
m = SDL_GetNumDisplayModes();
if (m == 0) {
fprintf(stderr, "No available fullscreen video modes\n");
} else {
fprintf(stderr, " Fullscreen video modes:\n");
for (j = 0; j < m; ++j) {
SDL_GetDisplayMode(j, &mode);
SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask,
&Gmask, &Bmask, &Amask);
fprintf(stderr,
" Mode %d: %dx%d@%dHz, %d bits-per-pixel\n",
j, mode.w, mode.h, mode.refresh_rate, bpp);
if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n",
Rmask);
fprintf(stderr, " Green Mask = 0x%.8x\n",
Gmask);
fprintf(stderr, " Blue Mask = 0x%.8x\n",
Bmask);
if (Amask)
fprintf(stderr,
" Alpha Mask = 0x%.8x\n",
Amask);
}
}
}
}
}
SDL_SelectVideoDisplay(state->display);
if (state->verbose & VERBOSE_RENDER) {
SDL_RendererInfo info;
n = SDL_GetNumRenderDrivers();
if (n == 0) {
fprintf(stderr, "No built-in render drivers\n");
} else {
fprintf(stderr, "Built-in render drivers:\n");
for (i = 0; i < n; ++i) {
SDL_GetRenderDriverInfo(i, &info);
PrintRenderer(&info);
}
}
}
switch (state->depth) {
case 8:
fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8;
break;
case 15:
fullscreen_mode.format = SDL_PIXELFORMAT_BGR555;
break;
case 16:
default:
fullscreen_mode.format = SDL_PIXELFORMAT_ABGR1555;
break;
/* NDS default:
fullscreen_mode.format = SDL_PIXELFORMAT_RGB888;
break;*/
}
fullscreen_mode.w = state->window_w;
fullscreen_mode.h = state->window_h;
fullscreen_mode.refresh_rate = state->refresh_rate;
SDL_SetFullscreenDisplayMode(&fullscreen_mode);
state->windows =
(SDL_WindowID *) SDL_malloc(state->num_windows *
sizeof(*state->windows));
if (!state->windows) {
fprintf(stderr, "Out of memory!\n");
return SDL_FALSE;
}
for (i = 0; i < state->num_windows; ++i) {
char title[1024];
if (state->num_windows > 1) {
SDL_snprintf(title, SDL_arraysize(title), "%s %d",
state->window_title, i + 1);
} else {
SDL_strlcpy(title, state->window_title, SDL_arraysize(title));
}
state->windows[i] =
SDL_CreateWindow(title, state->window_x, state->window_y,
state->window_w, state->window_h,
state->window_flags);
if (!state->windows[i]) {
fprintf(stderr, "Couldn't create window: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (!state->skip_renderer
&& (state->renderdriver
|| !(state->window_flags & SDL_WINDOW_OPENGL))) {
m = -1;
if (state->renderdriver) {
SDL_RendererInfo info;
n = SDL_GetNumRenderDrivers();
for (j = 0; j < n; ++j) {
SDL_GetRenderDriverInfo(j, &info);
if (SDL_strcasecmp(info.name, state->renderdriver) ==
0) {
m = j;
break;
}
}
if (m == n) {
fprintf(stderr,
"Couldn't find render driver named %s",
state->renderdriver);
return SDL_FALSE;
}
}
if (SDL_CreateRenderer
(state->windows[i], m, state->render_flags) < 0) {
fprintf(stderr, "Couldn't create renderer: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_RENDER) {
SDL_RendererInfo info;
fprintf(stderr, "Current renderer:\n");
SDL_GetRendererInfo(&info);
PrintRenderer(&info);
}
}
}
SDL_SelectRenderer(state->windows[0]);
}
if (state->flags & SDL_INIT_AUDIO) {
if (state->verbose & VERBOSE_AUDIO) {
n = SDL_GetNumAudioDrivers();
if (n == 0) {
fprintf(stderr, "No built-in audio drivers\n");
} else {
fprintf(stderr, "Built-in audio drivers:");
for (i = 0; i < n; ++i) {
if (i > 0) {
fprintf(stderr, ",");
}
fprintf(stderr, " %s", SDL_GetAudioDriver(i));
}
fprintf(stderr, "\n");
}
}
if (SDL_AudioInit(state->audiodriver) < 0) {
fprintf(stderr, "Couldn't initialize audio driver: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_VIDEO) {
fprintf(stderr, "Audio driver: %s\n",
SDL_GetCurrentAudioDriver());
}
if (SDL_OpenAudio(&state->audiospec, NULL) < 0) {
fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
return SDL_FALSE;
}
}
return SDL_TRUE;
}
static void
PrintEvent(SDL_Event * event)
{
fprintf(stderr, "SDL EVENT: ");
switch (event->type) {
case SDL_WINDOWEVENT:
switch (event->window.event) {
case SDL_WINDOWEVENT_SHOWN:
fprintf(stderr, "Window %d shown", event->window.windowID);
break;
case SDL_WINDOWEVENT_HIDDEN:
fprintf(stderr, "Window %d hidden", event->window.windowID);
break;
case SDL_WINDOWEVENT_EXPOSED:
fprintf(stderr, "Window %d exposed", event->window.windowID);
break;
case SDL_WINDOWEVENT_MOVED:
fprintf(stderr, "Window %d moved to %d,%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_RESIZED:
fprintf(stderr, "Window %d resized to %dx%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_MINIMIZED:
fprintf(stderr, "Window %d minimized", event->window.windowID);
break;
case SDL_WINDOWEVENT_MAXIMIZED:
fprintf(stderr, "Window %d maximized", event->window.windowID);
break;
case SDL_WINDOWEVENT_RESTORED:
fprintf(stderr, "Window %d restored", event->window.windowID);
break;
case SDL_WINDOWEVENT_ENTER:
fprintf(stderr, "Mouse entered window %d",
event->window.windowID);
break;
case SDL_WINDOWEVENT_LEAVE:
fprintf(stderr, "Mouse left window %d", event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
fprintf(stderr, "Window %d gained keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
fprintf(stderr, "Window %d lost keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_CLOSE:
fprintf(stderr, "Window %d closed", event->window.windowID);
break;
default:
fprintf(stderr, "Window %d got unknown event %d",
event->window.windowID, event->window.event);
break;
}
break;
case SDL_KEYDOWN:
fprintf(stderr,
"Keyboard %d: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
event->key.which, event->key.windowID,
event->key.keysym.scancode,
SDL_GetScancodeName(event->key.keysym.scancode),
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
break;
case SDL_KEYUP:
fprintf(stderr,
"Keyboard %d: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
event->key.which, event->key.windowID,
event->key.keysym.scancode,
SDL_GetScancodeName(event->key.keysym.scancode),
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
break;
case SDL_TEXTINPUT:
fprintf(stderr, "Keyboard %d: text input \"%s\" in window %d",
event->text.which, event->text.text, event->text.windowID);
break;
case SDL_MOUSEMOTION:
fprintf(stderr, "Mouse %d: moved to %d,%d (%d,%d) in window %d",
event->motion.which, event->motion.x, event->motion.y,
event->motion.xrel, event->motion.yrel,
event->motion.windowID);
break;
case SDL_MOUSEBUTTONDOWN:
fprintf(stderr, "Mouse %d: button %d pressed at %d,%d in window %d",
event->button.which, event->button.button, event->button.x,
event->button.y, event->button.windowID);
break;
case SDL_MOUSEBUTTONUP:
fprintf(stderr, "Mouse %d: button %d released at %d,%d in window %d",
event->button.which, event->button.button, event->button.x,
event->button.y, event->button.windowID);
break;
case SDL_MOUSEWHEEL:
fprintf(stderr,
"Mouse %d: wheel scrolled %d in x and %d in y in window %d",
event->wheel.which, event->wheel.x, event->wheel.y,
event->wheel.windowID);
break;
case SDL_JOYBALLMOTION:
fprintf(stderr, "Joystick %d: ball %d moved by %d,%d",
event->jball.which, event->jball.ball, event->jball.xrel,
event->jball.yrel);
break;
case SDL_JOYHATMOTION:
fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which,
event->jhat.hat);
switch (event->jhat.value) {
case SDL_HAT_CENTERED:
fprintf(stderr, "CENTER");
break;
case SDL_HAT_UP:
fprintf(stderr, "UP");
break;
case SDL_HAT_RIGHTUP:
fprintf(stderr, "RIGHTUP");
break;
case SDL_HAT_RIGHT:
fprintf(stderr, "RIGHT");
break;
case SDL_HAT_RIGHTDOWN:
fprintf(stderr, "RIGHTDOWN");
break;
case SDL_HAT_DOWN:
fprintf(stderr, "DOWN");
break;
case SDL_HAT_LEFTDOWN:
fprintf(stderr, "LEFTDOWN");
break;
case SDL_HAT_LEFT:
fprintf(stderr, "LEFT");
break;
case SDL_HAT_LEFTUP:
fprintf(stderr, "LEFTUP");
break;
default:
fprintf(stderr, "UNKNOWN");
break;
}
break;
case SDL_JOYBUTTONDOWN:
fprintf(stderr, "Joystick %d: button %d pressed",
event->jbutton.which, event->jbutton.button);
break;
case SDL_JOYBUTTONUP:
fprintf(stderr, "Joystick %d: button %d released",
event->jbutton.which, event->jbutton.button);
break;
case SDL_QUIT:
fprintf(stderr, "Quit requested");
break;
case SDL_USEREVENT:
fprintf(stderr, "User event %d", event->user.code);
break;
default:
fprintf(stderr, "Unknown event %d", event->type);
break;
}
fprintf(stderr, "\n");
}
void
CommonEvent(CommonState * state, SDL_Event * event, int *done)
{
if (state->verbose & VERBOSE_EVENT) {
PrintEvent(event);
}
switch (event->type) {
case SDL_WINDOWEVENT:
switch (event->window.event) {
case SDL_WINDOWEVENT_CLOSE:
*done = 1;
break;
}
break;
case SDL_KEYDOWN:
switch (event->key.keysym.sym) {
/* Add hotkeys here */
case SDLK_g:
if (event->key.keysym.mod & KMOD_CTRL) {
/* Ctrl-G toggle grab */
}
break;
case SDLK_ESCAPE:
*done = 1;
break;
default:
break;
}
break;
case SDL_QUIT:
*done = 1;
break;
}
}
void
CommonQuit(CommonState * state)
{
if (state->flags & SDL_INIT_VIDEO) {
SDL_VideoQuit();
}
if (state->flags & SDL_INIT_AUDIO) {
SDL_AudioQuit();
}
if (state->windows) {
SDL_free(state->windows);
}
SDL_free(state);
}

View File

@@ -1,48 +0,0 @@
/* A simple test program framework */
#include <SDL/SDL.h>
#define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004
#define VERBOSE_EVENT 0x00000008
#define VERBOSE_AUDIO 0x00000010
typedef struct
{
/* SDL init flags */
char **argv;
Uint32 flags;
Uint32 verbose;
/* Video info */
const char *videodriver;
int display;
const char *window_title;
Uint32 window_flags;
int window_x;
int window_y;
int window_w;
int window_h;
int depth;
int refresh_rate;
int num_windows;
SDL_WindowID *windows;
/* Renderer info */
const char *renderdriver;
Uint32 render_flags;
SDL_bool skip_renderer;
/* Audio info */
const char *audiodriver;
SDL_AudioSpec audiospec;
} CommonState;
extern CommonState *CommonCreateState(char **argv, Uint32 flags);
extern int CommonArg(CommonState * state, int index);
extern const char *CommonUsage(CommonState * state);
extern SDL_bool CommonInit(CommonState * state);
extern void CommonEvent(CommonState * state, SDL_Event * event, int *done);
extern void CommonQuit(CommonState * state);

View File

@@ -1,316 +0,0 @@
/* Simple program: Move N sprites around on the screen as fast as possible */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <fat.h>
#include <SDL/SDL.h>
#define NUM_SPRITES 10
#define MAX_SPEED 1
SDL_Surface *sprite;
int numsprites;
SDL_Rect *sprite_rects;
SDL_Rect *positions;
SDL_Rect *velocities;
int sprites_visible;
int debug_flip;
Uint16 sprite_w, sprite_h;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static void
quit(int rc)
{
SDL_Quit();
exit(rc);
}
int
LoadSprite(char *file)
{
SDL_Surface *temp;
/* Load the sprite image */
sprite = SDL_LoadBMP(file);
if (sprite == NULL) {
fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError());
return (-1);
}
/* Set transparent pixel as the pixel at (0,0) */
if (sprite->format->palette) {
SDL_SetColorKey(sprite, (SDL_SRCCOLORKEY | SDL_RLEACCEL),
*(Uint8 *) sprite->pixels);
}
/* Convert sprite to video format */
temp = SDL_DisplayFormat(sprite);
SDL_FreeSurface(sprite);
if (temp == NULL) {
fprintf(stderr, "Couldn't convert background: %s\n", SDL_GetError());
return (-1);
}
sprite = temp;
/* We're ready to roll. :) */
return (0);
}
void
MoveSprites(SDL_Surface * screen, Uint32 background)
{
int i, nupdates;
SDL_Rect area, *position, *velocity;
nupdates = 0;
/* Erase all the sprites if necessary */
if (sprites_visible) {
SDL_FillRect(screen, NULL, background);
}
/* Move the sprite, bounce at the wall, and draw */
for (i = 0; i < numsprites; ++i) {
position = &positions[i];
velocity = &velocities[i];
position->x += velocity->x;
if ((position->x < 0) || (position->x >= (screen->w - sprite_w))) {
velocity->x = -velocity->x;
position->x += velocity->x;
}
position->y += velocity->y;
if ((position->y < 0) || (position->y >= (screen->h - sprite_w))) {
velocity->y = -velocity->y;
position->y += velocity->y;
}
/* Blit the sprite onto the screen */
area = *position;
SDL_BlitSurface(sprite, NULL, screen, &area);
sprite_rects[nupdates++] = area;
}
if (debug_flip) {
if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) {
static int t = 0;
Uint32 color = SDL_MapRGB(screen->format, 255, 0, 0);
SDL_Rect r;
r.x = t;
/* (sin((float) t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w - 20); */
r.y = 0;
r.w = 20;
r.h = screen->h;
SDL_FillRect(screen, &r, color);
t += 2;
}
}
/* Update the screen! */
if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) {
SDL_Flip(screen);
} else {
SDL_UpdateRects(screen, nupdates, sprite_rects);
}
sprites_visible = 1;
}
/* This is a way of telling whether or not to use hardware surfaces */
Uint32
FastestFlags(Uint32 flags, int width, int height, int bpp)
{
const SDL_VideoInfo *info;
/* Hardware acceleration is only used in fullscreen mode */
flags |= SDL_FULLSCREEN;
/* Check for various video capabilities */
info = SDL_GetVideoInfo();
if (info->blit_hw_CC && info->blit_fill) {
/* We use accelerated colorkeying and color filling */
flags |= SDL_HWSURFACE;
}
/* If we have enough video memory, and will use accelerated
blits directly to it, then use page flipping.
*/
if ((flags & SDL_HWSURFACE) == SDL_HWSURFACE) {
/* Direct hardware blitting without double-buffering
causes really bad flickering.
*/
if (info->video_mem * 1024 > (height * width * bpp / 8)) {
flags |= SDL_DOUBLEBUF;
} else {
flags &= ~SDL_HWSURFACE;
}
}
/* Return the flags */
return (flags);
}
int
main(int argc, char *argv[])
{
SDL_Surface *screen;
Uint8 *mem;
int width, height;
Uint8 video_bpp;
Uint32 videoflags;
Uint32 background;
int i, done;
SDL_Event event;
Uint32 then, now, frames;
consoleDemoInit();
puts("Hello world! Initializing FAT...");
fatInitDefault();
/* Initialize SDL */
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
puts("* initialized SDL");
numsprites = NUM_SPRITES;
videoflags = SDL_SWSURFACE /*| SDL_ANYFORMAT */ ;
width = 256;
height = 192;
video_bpp = 15;
debug_flip = 0;
while (argc > 1) {
--argc;
if (strcmp(argv[argc - 1], "-width") == 0) {
width = atoi(argv[argc]);
--argc;
} else if (strcmp(argv[argc - 1], "-height") == 0) {
height = atoi(argv[argc]);
--argc;
} else if (strcmp(argv[argc - 1], "-bpp") == 0) {
video_bpp = atoi(argv[argc]);
videoflags &= ~SDL_ANYFORMAT;
--argc;
} else if (strcmp(argv[argc], "-fast") == 0) {
videoflags = FastestFlags(videoflags, width, height, video_bpp);
} else if (strcmp(argv[argc], "-hw") == 0) {
videoflags ^= SDL_HWSURFACE;
} else if (strcmp(argv[argc], "-flip") == 0) {
videoflags ^= SDL_DOUBLEBUF;
} else if (strcmp(argv[argc], "-debugflip") == 0) {
debug_flip ^= 1;
} else if (strcmp(argv[argc], "-fullscreen") == 0) {
videoflags ^= SDL_FULLSCREEN;
} else if (isdigit(argv[argc][0])) {
numsprites = atoi(argv[argc]);
} else {
fprintf(stderr,
"Usage: %s [-bpp N] [-hw] [-flip] [-fast] [-fullscreen] [numsprites]\n",
argv[0]);
quit(1);
}
}
/* Set video mode */
screen = SDL_SetVideoMode(width, height, video_bpp, videoflags);
if (!screen) {
fprintf(stderr, "Couldn't set %dx%d video mode: %s\n",
width, height, SDL_GetError());
quit(2);
}
screen->flags &= ~SDL_PREALLOC;
puts("* set video mode");
/* Load the sprite */
if (LoadSprite("icon.bmp") < 0) {
quit(1);
}
puts("* loaded sprite");
/* Allocate memory for the sprite info */
mem = (Uint8 *) malloc(4 * sizeof(SDL_Rect) * numsprites);
if (mem == NULL) {
SDL_FreeSurface(sprite);
fprintf(stderr, "Out of memory!\n");
quit(2);
}
sprite_rects = (SDL_Rect *) mem;
positions = sprite_rects;
sprite_rects += numsprites;
velocities = sprite_rects;
sprite_rects += numsprites;
sprite_w = sprite->w;
sprite_h = sprite->h;
srand(time(NULL));
for (i = 0; i < numsprites; ++i) {
positions[i].x = rand() % (screen->w - sprite_w);
positions[i].y = rand() % (screen->h - sprite_h);
positions[i].w = sprite->w;
positions[i].h = sprite->h;
velocities[i].x = 0;
velocities[i].y = 0;
while (!velocities[i].x && !velocities[i].y) {
velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED;
velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED;
}
}
background = SDL_MapRGB(screen->format, 0x00, 0x00, 0x00);
/* Print out information about our surfaces */
printf("Screen is at %d bits per pixel\n", screen->format->BitsPerPixel);
if ((screen->flags & SDL_HWSURFACE) == SDL_HWSURFACE) {
printf("Screen is in video memory\n");
} else {
printf("Screen is in system memory\n");
}
if ((screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF) {
printf("Screen has double-buffering enabled\n");
}
if ((sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE) {
printf("Sprite is in video memory\n");
} else {
printf("Sprite is in system memory\n");
}
/* Run a sample blit to trigger blit acceleration */
{
SDL_Rect dst;
dst.x = 0;
dst.y = 0;
dst.w = sprite->w;
dst.h = sprite->h;
SDL_BlitSurface(sprite, NULL, screen, &dst);
SDL_FillRect(screen, &dst, background);
}
if ((sprite->flags & SDL_HWACCEL) == SDL_HWACCEL) {
printf("Sprite blit uses hardware acceleration\n");
}
if ((sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
printf("Sprite blit uses RLE acceleration\n");
}
/* Loop, blitting sprites and waiting for a keystroke */
frames = 0;
then = SDL_GetTicks();
done = 0;
sprites_visible = 0;
puts("hello!");
while (!done) {
/* Check for events */
++frames;
printf(".");
swiWaitForVBlank();
MoveSprites(screen, background);
}
puts("goodbye!");
SDL_FreeSurface(sprite);
free(mem);
/* Print out some timing information */
now = SDL_GetTicks();
if (now > then) {
printf("%2.2f frames per second\n",
((double) frames * 1000) / (now - then));
}
SDL_Quit();
return (0);
}

View File

@@ -1,132 +0,0 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
DATA := data
INCLUDES := include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb -mthumb-interwork
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
# *insists* it has a FPU or VFP, and it won't take no for an answer!
CFLAGS := -save-temps -g -Wall -O0\
-mcpu=arm9tdmi -mtune=arm9tdmi \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9 -D__NDS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-exceptions -fno-rtti
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,$(notdir $*.map)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lSDL -lfat -lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9 $(TARGET).ds.gba
#---------------------------------------------------------------------------------
else
DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).ds.gba : $(OUTPUT).nds
$(OUTPUT).nds : $(OUTPUT).arm9
$(OUTPUT).arm9 : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES)
#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

View File

@@ -1,965 +0,0 @@
/* A simple test program framework */
#include <stdio.h>
#include "common.h"
#define VIDEO_USAGE \
"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--display %d] [--fullscreen | --windows N] [--title title] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]"
#define AUDIO_USAGE \
"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
CommonState *
CommonCreateState(char **argv, Uint32 flags)
{
CommonState *state = SDL_calloc(1, sizeof(*state));
if (!state) {
SDL_OutOfMemory();
return NULL;
}
/* Initialize some defaults */
state->argv = argv;
state->flags = flags;
state->window_title = argv[0];
state->window_flags = SDL_WINDOW_SHOWN;
state->window_x = SDL_WINDOWPOS_UNDEFINED;
state->window_y = SDL_WINDOWPOS_UNDEFINED;
state->window_w = 256;
state->window_h = 192;
state->num_windows = 1;
state->audiospec.freq = 22050;
state->audiospec.format = AUDIO_S16;
state->audiospec.channels = 2;
state->audiospec.samples = 2048;
return state;
}
int
CommonArg(CommonState * state, int index)
{
char **argv = state->argv;
if (SDL_strcasecmp(argv[index], "--video") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->videodriver = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--renderer") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->renderdriver = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--info") == 0) {
++index;
if (!argv[index]) {
return -1;
}
if (SDL_strcasecmp(argv[index], "all") == 0) {
state->verbose |=
(VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER |
VERBOSE_EVENT);
return 2;
}
if (SDL_strcasecmp(argv[index], "video") == 0) {
state->verbose |= VERBOSE_VIDEO;
return 2;
}
if (SDL_strcasecmp(argv[index], "modes") == 0) {
state->verbose |= VERBOSE_MODES;
return 2;
}
if (SDL_strcasecmp(argv[index], "render") == 0) {
state->verbose |= VERBOSE_RENDER;
return 2;
}
if (SDL_strcasecmp(argv[index], "event") == 0) {
state->verbose |= VERBOSE_EVENT;
return 2;
}
return -1;
}
if (SDL_strcasecmp(argv[index], "--display") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->display = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) {
state->window_flags |= SDL_WINDOW_FULLSCREEN;
state->num_windows = 1;
return 1;
}
if (SDL_strcasecmp(argv[index], "--windows") == 0) {
++index;
if (!argv[index] || !SDL_isdigit(*argv[index])) {
return -1;
}
if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
state->num_windows = SDL_atoi(argv[index]);
}
return 2;
}
if (SDL_strcasecmp(argv[index], "--title") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->window_title = argv[index];
return 2;
}
if (SDL_strcasecmp(argv[index], "--center") == 0) {
state->window_x = SDL_WINDOWPOS_CENTERED;
state->window_y = SDL_WINDOWPOS_CENTERED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--position") == 0) {
char *x, *y;
++index;
if (!argv[index]) {
return -1;
}
x = argv[index];
y = argv[index];
while (*y && *y != ',') {
++y;
}
if (!*y) {
return -1;
}
*y++ = '\0';
state->window_x = SDL_atoi(x);
state->window_y = SDL_atoi(y);
return 2;
}
if (SDL_strcasecmp(argv[index], "--geometry") == 0) {
char *w, *h;
++index;
if (!argv[index]) {
return -1;
}
w = argv[index];
h = argv[index];
while (*h && *h != 'x') {
++h;
}
if (!*h) {
return -1;
}
*h++ = '\0';
state->window_w = SDL_atoi(w);
state->window_h = SDL_atoi(h);
return 2;
}
if (SDL_strcasecmp(argv[index], "--depth") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->depth = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--refresh") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->refresh_rate = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--vsync") == 0) {
state->render_flags |= SDL_RENDERER_PRESENTVSYNC;
return 1;
}
if (SDL_strcasecmp(argv[index], "--noframe") == 0) {
state->window_flags |= SDL_WINDOW_BORDERLESS;
return 1;
}
if (SDL_strcasecmp(argv[index], "--resize") == 0) {
state->window_flags |= SDL_WINDOW_RESIZABLE;
return 1;
}
if (SDL_strcasecmp(argv[index], "--minimize") == 0) {
state->window_flags |= SDL_WINDOW_MINIMIZED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--maximize") == 0) {
state->window_flags |= SDL_WINDOW_MAXIMIZED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--grab") == 0) {
state->window_flags |= SDL_WINDOW_INPUT_GRABBED;
return 1;
}
if (SDL_strcasecmp(argv[index], "--rate") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.freq = SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--format") == 0) {
++index;
if (!argv[index]) {
return -1;
}
if (SDL_strcasecmp(argv[index], "U8") == 0) {
state->audiospec.format = AUDIO_U8;
return 2;
}
if (SDL_strcasecmp(argv[index], "S8") == 0) {
state->audiospec.format = AUDIO_S8;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16") == 0) {
state->audiospec.format = AUDIO_U16;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16LE") == 0) {
state->audiospec.format = AUDIO_U16LSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "U16BE") == 0) {
state->audiospec.format = AUDIO_U16MSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16") == 0) {
state->audiospec.format = AUDIO_S16;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16LE") == 0) {
state->audiospec.format = AUDIO_S16LSB;
return 2;
}
if (SDL_strcasecmp(argv[index], "S16BE") == 0) {
state->audiospec.format = AUDIO_S16MSB;
return 2;
}
return -1;
}
if (SDL_strcasecmp(argv[index], "--channels") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.channels = (Uint8) SDL_atoi(argv[index]);
return 2;
}
if (SDL_strcasecmp(argv[index], "--samples") == 0) {
++index;
if (!argv[index]) {
return -1;
}
state->audiospec.samples = (Uint16) SDL_atoi(argv[index]);
return 2;
}
if ((SDL_strcasecmp(argv[index], "-h") == 0)
|| (SDL_strcasecmp(argv[index], "--help") == 0)) {
/* Print the usage message */
return -1;
}
return 0;
}
const char *
CommonUsage(CommonState * state)
{
switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) {
case SDL_INIT_VIDEO:
return VIDEO_USAGE;
case SDL_INIT_AUDIO:
return AUDIO_USAGE;
case (SDL_INIT_VIDEO | SDL_INIT_AUDIO):
return VIDEO_USAGE " " AUDIO_USAGE;
default:
return "";
}
}
static void
PrintRendererFlag(Uint32 flag)
{
switch (flag) {
case SDL_RENDERER_SINGLEBUFFER:
fprintf(stderr, "SingleBuffer");
break;
case SDL_RENDERER_PRESENTCOPY:
fprintf(stderr, "PresentCopy");
break;
case SDL_RENDERER_PRESENTFLIP2:
fprintf(stderr, "PresentFlip2");
break;
case SDL_RENDERER_PRESENTFLIP3:
fprintf(stderr, "PresentFlip3");
break;
case SDL_RENDERER_PRESENTDISCARD:
fprintf(stderr, "PresentDiscard");
break;
case SDL_RENDERER_PRESENTVSYNC:
fprintf(stderr, "PresentVSync");
break;
case SDL_RENDERER_ACCELERATED:
fprintf(stderr, "Accelerated");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintBlendMode(Uint32 flag)
{
switch (flag) {
case SDL_BLENDMODE_NONE:
fprintf(stderr, "None");
break;
case SDL_BLENDMODE_MASK:
fprintf(stderr, "Mask");
break;
case SDL_BLENDMODE_BLEND:
fprintf(stderr, "Blend");
break;
case SDL_BLENDMODE_ADD:
fprintf(stderr, "Add");
break;
case SDL_BLENDMODE_MOD:
fprintf(stderr, "Mod");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintScaleMode(Uint32 flag)
{
switch (flag) {
case SDL_TEXTURESCALEMODE_NONE:
fprintf(stderr, "None");
break;
case SDL_TEXTURESCALEMODE_FAST:
fprintf(stderr, "Fast");
break;
case SDL_TEXTURESCALEMODE_SLOW:
fprintf(stderr, "Slow");
break;
case SDL_TEXTURESCALEMODE_BEST:
fprintf(stderr, "Best");
break;
default:
fprintf(stderr, "0x%8.8x", flag);
break;
}
}
static void
PrintPixelFormat(Uint32 format)
{
switch (format) {
case SDL_PIXELFORMAT_UNKNOWN:
fprintf(stderr, "Unknwon");
break;
case SDL_PIXELFORMAT_INDEX1LSB:
fprintf(stderr, "Index1LSB");
break;
case SDL_PIXELFORMAT_INDEX1MSB:
fprintf(stderr, "Index1MSB");
break;
case SDL_PIXELFORMAT_INDEX4LSB:
fprintf(stderr, "Index4LSB");
break;
case SDL_PIXELFORMAT_INDEX4MSB:
fprintf(stderr, "Index4MSB");
break;
case SDL_PIXELFORMAT_INDEX8:
fprintf(stderr, "Index8");
break;
case SDL_PIXELFORMAT_RGB332:
fprintf(stderr, "RGB332");
break;
case SDL_PIXELFORMAT_RGB444:
fprintf(stderr, "RGB444");
break;
case SDL_PIXELFORMAT_RGB555:
fprintf(stderr, "RGB555");
break;
case SDL_PIXELFORMAT_ARGB4444:
fprintf(stderr, "ARGB4444");
break;
case SDL_PIXELFORMAT_ARGB1555:
fprintf(stderr, "ARGB1555");
break;
case SDL_PIXELFORMAT_RGB565:
fprintf(stderr, "RGB565");
break;
case SDL_PIXELFORMAT_RGB24:
fprintf(stderr, "RGB24");
break;
case SDL_PIXELFORMAT_BGR24:
fprintf(stderr, "BGR24");
break;
case SDL_PIXELFORMAT_RGB888:
fprintf(stderr, "RGB888");
break;
case SDL_PIXELFORMAT_BGR888:
fprintf(stderr, "BGR888");
break;
case SDL_PIXELFORMAT_ARGB8888:
fprintf(stderr, "ARGB8888");
break;
case SDL_PIXELFORMAT_RGBA8888:
fprintf(stderr, "RGBA8888");
break;
case SDL_PIXELFORMAT_ABGR8888:
fprintf(stderr, "ABGR8888");
break;
case SDL_PIXELFORMAT_BGRA8888:
fprintf(stderr, "BGRA8888");
break;
case SDL_PIXELFORMAT_ARGB2101010:
fprintf(stderr, "ARGB2101010");
break;
case SDL_PIXELFORMAT_YV12:
fprintf(stderr, "YV12");
break;
case SDL_PIXELFORMAT_IYUV:
fprintf(stderr, "IYUV");
break;
case SDL_PIXELFORMAT_YUY2:
fprintf(stderr, "YUY2");
break;
case SDL_PIXELFORMAT_UYVY:
fprintf(stderr, "UYVY");
break;
case SDL_PIXELFORMAT_YVYU:
fprintf(stderr, "YVYU");
break;
case SDL_PIXELFORMAT_ABGR1555:
fprintf(stderr, "ABGR1555");
break;
case SDL_PIXELFORMAT_BGR555:
fprintf(stderr, "BGR555");
break;
default:
fprintf(stderr, "0x%8.8x", format);
break;
}
}
static void
PrintRenderer(SDL_RendererInfo * info)
{
int i, count;
fprintf(stderr, " Renderer %s:\n", info->name);
fprintf(stderr, " Flags: 0x%8.8X", info->flags);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->flags) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->flags & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintRendererFlag(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Blend: 0x%8.8X", info->blend_modes);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->blend_modes) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->blend_modes & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintBlendMode(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Scale: 0x%8.8X", info->scale_modes);
fprintf(stderr, " (");
count = 0;
for (i = 0; i < sizeof(info->scale_modes) * 8; ++i) {
Uint32 flag = (1 << i);
if (info->scale_modes & flag) {
if (count > 0) {
fprintf(stderr, " | ");
}
PrintScaleMode(flag);
++count;
}
}
fprintf(stderr, ")\n");
fprintf(stderr, " Texture formats (%d): ", info->num_texture_formats);
for (i = 0; i < (int) info->num_texture_formats; ++i) {
if (i > 0) {
fprintf(stderr, ", ");
}
PrintPixelFormat(info->texture_formats[i]);
}
fprintf(stderr, "\n");
if (info->max_texture_width || info->max_texture_height) {
fprintf(stderr, " Max Texture Size: %dx%d\n",
info->max_texture_width, info->max_texture_height);
}
}
SDL_bool
CommonInit(CommonState * state)
{
int i, j, m, n;
SDL_DisplayMode fullscreen_mode;
if (state->flags & SDL_INIT_VIDEO) {
if (state->verbose & VERBOSE_VIDEO) {
n = SDL_GetNumVideoDrivers();
if (n == 0) {
fprintf(stderr, "No built-in video drivers\n");
} else {
fprintf(stderr, "Built-in video drivers:");
for (i = 0; i < n; ++i) {
if (i > 0) {
fprintf(stderr, ",");
}
fprintf(stderr, " %s", SDL_GetVideoDriver(i));
}
fprintf(stderr, "\n");
}
}
if (SDL_VideoInit(state->videodriver, 0) < 0) {
fprintf(stderr, "Couldn't initialize video driver: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_VIDEO) {
fprintf(stderr, "Video driver: %s\n",
SDL_GetCurrentVideoDriver());
}
if (state->verbose & VERBOSE_MODES) {
SDL_DisplayMode mode;
int bpp;
Uint32 Rmask, Gmask, Bmask, Amask;
n = SDL_GetNumVideoDisplays();
fprintf(stderr, "Number of displays: %d\n", n);
for (i = 0; i < n; ++i) {
fprintf(stderr, "Display %d:\n", i);
SDL_SelectVideoDisplay(i);
SDL_GetDesktopDisplayMode(&mode);
SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask,
&Bmask, &Amask);
fprintf(stderr,
" Current mode: %dx%d@%dHz, %d bits-per-pixel\n",
mode.w, mode.h, mode.refresh_rate, bpp);
if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask);
fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask);
fprintf(stderr, " Blue Mask = 0x%.8x\n", Bmask);
if (Amask)
fprintf(stderr, " Alpha Mask = 0x%.8x\n", Amask);
}
/* Print available fullscreen video modes */
m = SDL_GetNumDisplayModes();
if (m == 0) {
fprintf(stderr, "No available fullscreen video modes\n");
} else {
fprintf(stderr, " Fullscreen video modes:\n");
for (j = 0; j < m; ++j) {
SDL_GetDisplayMode(j, &mode);
SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask,
&Gmask, &Bmask, &Amask);
fprintf(stderr,
" Mode %d: %dx%d@%dHz, %d bits-per-pixel\n",
j, mode.w, mode.h, mode.refresh_rate, bpp);
if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n",
Rmask);
fprintf(stderr, " Green Mask = 0x%.8x\n",
Gmask);
fprintf(stderr, " Blue Mask = 0x%.8x\n",
Bmask);
if (Amask)
fprintf(stderr,
" Alpha Mask = 0x%.8x\n",
Amask);
}
}
}
}
}
SDL_SelectVideoDisplay(state->display);
if (state->verbose & VERBOSE_RENDER) {
SDL_RendererInfo info;
n = SDL_GetNumRenderDrivers();
if (n == 0) {
fprintf(stderr, "No built-in render drivers\n");
} else {
fprintf(stderr, "Built-in render drivers:\n");
for (i = 0; i < n; ++i) {
SDL_GetRenderDriverInfo(i, &info);
PrintRenderer(&info);
}
}
}
switch (state->depth) {
case 8:
fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8;
break;
case 15:
fullscreen_mode.format = SDL_PIXELFORMAT_BGR555;
break;
case 16:
default:
fullscreen_mode.format = SDL_PIXELFORMAT_ABGR1555;
break;
/* NDS default:
fullscreen_mode.format = SDL_PIXELFORMAT_RGB888;
break;*/
}
fullscreen_mode.w = state->window_w;
fullscreen_mode.h = state->window_h;
fullscreen_mode.refresh_rate = state->refresh_rate;
SDL_SetFullscreenDisplayMode(&fullscreen_mode);
state->windows =
(SDL_WindowID *) SDL_malloc(state->num_windows *
sizeof(*state->windows));
if (!state->windows) {
fprintf(stderr, "Out of memory!\n");
return SDL_FALSE;
}
for (i = 0; i < state->num_windows; ++i) {
char title[1024];
if (state->num_windows > 1) {
SDL_snprintf(title, SDL_arraysize(title), "%s %d",
state->window_title, i + 1);
} else {
SDL_strlcpy(title, state->window_title, SDL_arraysize(title));
}
state->windows[i] =
SDL_CreateWindow(title, state->window_x, state->window_y,
state->window_w, state->window_h,
state->window_flags);
if (!state->windows[i]) {
fprintf(stderr, "Couldn't create window: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (!state->skip_renderer
&& (state->renderdriver
|| !(state->window_flags & SDL_WINDOW_OPENGL))) {
m = -1;
if (state->renderdriver) {
SDL_RendererInfo info;
n = SDL_GetNumRenderDrivers();
for (j = 0; j < n; ++j) {
SDL_GetRenderDriverInfo(j, &info);
if (SDL_strcasecmp(info.name, state->renderdriver) ==
0) {
m = j;
break;
}
}
if (m == n) {
fprintf(stderr,
"Couldn't find render driver named %s",
state->renderdriver);
return SDL_FALSE;
}
}
if (SDL_CreateRenderer
(state->windows[i], m, state->render_flags) < 0) {
fprintf(stderr, "Couldn't create renderer: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_RENDER) {
SDL_RendererInfo info;
fprintf(stderr, "Current renderer:\n");
SDL_GetRendererInfo(&info);
PrintRenderer(&info);
}
}
}
SDL_SelectRenderer(state->windows[0]);
}
if (state->flags & SDL_INIT_AUDIO) {
if (state->verbose & VERBOSE_AUDIO) {
n = SDL_GetNumAudioDrivers();
if (n == 0) {
fprintf(stderr, "No built-in audio drivers\n");
} else {
fprintf(stderr, "Built-in audio drivers:");
for (i = 0; i < n; ++i) {
if (i > 0) {
fprintf(stderr, ",");
}
fprintf(stderr, " %s", SDL_GetAudioDriver(i));
}
fprintf(stderr, "\n");
}
}
if (SDL_AudioInit(state->audiodriver) < 0) {
fprintf(stderr, "Couldn't initialize audio driver: %s\n",
SDL_GetError());
return SDL_FALSE;
}
if (state->verbose & VERBOSE_VIDEO) {
fprintf(stderr, "Audio driver: %s\n",
SDL_GetCurrentAudioDriver());
}
if (SDL_OpenAudio(&state->audiospec, NULL) < 0) {
fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
return SDL_FALSE;
}
}
return SDL_TRUE;
}
static void
PrintEvent(SDL_Event * event)
{
fprintf(stderr, "SDL EVENT: ");
switch (event->type) {
case SDL_WINDOWEVENT:
switch (event->window.event) {
case SDL_WINDOWEVENT_SHOWN:
fprintf(stderr, "Window %d shown", event->window.windowID);
break;
case SDL_WINDOWEVENT_HIDDEN:
fprintf(stderr, "Window %d hidden", event->window.windowID);
break;
case SDL_WINDOWEVENT_EXPOSED:
fprintf(stderr, "Window %d exposed", event->window.windowID);
break;
case SDL_WINDOWEVENT_MOVED:
fprintf(stderr, "Window %d moved to %d,%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_RESIZED:
fprintf(stderr, "Window %d resized to %dx%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_MINIMIZED:
fprintf(stderr, "Window %d minimized", event->window.windowID);
break;
case SDL_WINDOWEVENT_MAXIMIZED:
fprintf(stderr, "Window %d maximized", event->window.windowID);
break;
case SDL_WINDOWEVENT_RESTORED:
fprintf(stderr, "Window %d restored", event->window.windowID);
break;
case SDL_WINDOWEVENT_ENTER:
fprintf(stderr, "Mouse entered window %d",
event->window.windowID);
break;
case SDL_WINDOWEVENT_LEAVE:
fprintf(stderr, "Mouse left window %d", event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
fprintf(stderr, "Window %d gained keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
fprintf(stderr, "Window %d lost keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_CLOSE:
fprintf(stderr, "Window %d closed", event->window.windowID);
break;
default:
fprintf(stderr, "Window %d got unknown event %d",
event->window.windowID, event->window.event);
break;
}
break;
case SDL_KEYDOWN:
fprintf(stderr,
"Keyboard %d: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
event->key.which, event->key.windowID,
event->key.keysym.scancode,
SDL_GetScancodeName(event->key.keysym.scancode),
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
break;
case SDL_KEYUP:
fprintf(stderr,
"Keyboard %d: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
event->key.which, event->key.windowID,
event->key.keysym.scancode,
SDL_GetScancodeName(event->key.keysym.scancode),
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
break;
case SDL_TEXTINPUT:
fprintf(stderr, "Keyboard %d: text input \"%s\" in window %d",
event->text.which, event->text.text, event->text.windowID);
break;
case SDL_MOUSEMOTION:
fprintf(stderr, "Mouse %d: moved to %d,%d (%d,%d) in window %d",
event->motion.which, event->motion.x, event->motion.y,
event->motion.xrel, event->motion.yrel,
event->motion.windowID);
break;
case SDL_MOUSEBUTTONDOWN:
fprintf(stderr, "Mouse %d: button %d pressed at %d,%d in window %d",
event->button.which, event->button.button, event->button.x,
event->button.y, event->button.windowID);
break;
case SDL_MOUSEBUTTONUP:
fprintf(stderr, "Mouse %d: button %d released at %d,%d in window %d",
event->button.which, event->button.button, event->button.x,
event->button.y, event->button.windowID);
break;
case SDL_MOUSEWHEEL:
fprintf(stderr,
"Mouse %d: wheel scrolled %d in x and %d in y in window %d",
event->wheel.which, event->wheel.x, event->wheel.y,
event->wheel.windowID);
break;
case SDL_JOYBALLMOTION:
fprintf(stderr, "Joystick %d: ball %d moved by %d,%d",
event->jball.which, event->jball.ball, event->jball.xrel,
event->jball.yrel);
break;
case SDL_JOYHATMOTION:
fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which,
event->jhat.hat);
switch (event->jhat.value) {
case SDL_HAT_CENTERED:
fprintf(stderr, "CENTER");
break;
case SDL_HAT_UP:
fprintf(stderr, "UP");
break;
case SDL_HAT_RIGHTUP:
fprintf(stderr, "RIGHTUP");
break;
case SDL_HAT_RIGHT:
fprintf(stderr, "RIGHT");
break;
case SDL_HAT_RIGHTDOWN:
fprintf(stderr, "RIGHTDOWN");
break;
case SDL_HAT_DOWN:
fprintf(stderr, "DOWN");
break;
case SDL_HAT_LEFTDOWN:
fprintf(stderr, "LEFTDOWN");
break;
case SDL_HAT_LEFT:
fprintf(stderr, "LEFT");
break;
case SDL_HAT_LEFTUP:
fprintf(stderr, "LEFTUP");
break;
default:
fprintf(stderr, "UNKNOWN");
break;
}
break;
case SDL_JOYBUTTONDOWN:
fprintf(stderr, "Joystick %d: button %d pressed",
event->jbutton.which, event->jbutton.button);
break;
case SDL_JOYBUTTONUP:
fprintf(stderr, "Joystick %d: button %d released",
event->jbutton.which, event->jbutton.button);
break;
case SDL_QUIT:
fprintf(stderr, "Quit requested");
break;
case SDL_USEREVENT:
fprintf(stderr, "User event %d", event->user.code);
break;
default:
fprintf(stderr, "Unknown event %d", event->type);
break;
}
fprintf(stderr, "\n");
}
void
CommonEvent(CommonState * state, SDL_Event * event, int *done)
{
if (state->verbose & VERBOSE_EVENT) {
PrintEvent(event);
}
switch (event->type) {
case SDL_WINDOWEVENT:
switch (event->window.event) {
case SDL_WINDOWEVENT_CLOSE:
*done = 1;
break;
}
break;
case SDL_KEYDOWN:
switch (event->key.keysym.sym) {
/* Add hotkeys here */
case SDLK_g:
if (event->key.keysym.mod & KMOD_CTRL) {
/* Ctrl-G toggle grab */
}
break;
case SDLK_ESCAPE:
*done = 1;
break;
default:
break;
}
break;
case SDL_QUIT:
*done = 1;
break;
}
}
void
CommonQuit(CommonState * state)
{
if (state->flags & SDL_INIT_VIDEO) {
SDL_VideoQuit();
}
if (state->flags & SDL_INIT_AUDIO) {
SDL_AudioQuit();
}
if (state->windows) {
SDL_free(state->windows);
}
SDL_free(state);
}

View File

@@ -1,48 +0,0 @@
/* A simple test program framework */
#include <SDL/SDL.h>
#define VERBOSE_VIDEO 0x00000001
#define VERBOSE_MODES 0x00000002
#define VERBOSE_RENDER 0x00000004
#define VERBOSE_EVENT 0x00000008
#define VERBOSE_AUDIO 0x00000010
typedef struct
{
/* SDL init flags */
char **argv;
Uint32 flags;
Uint32 verbose;
/* Video info */
const char *videodriver;
int display;
const char *window_title;
Uint32 window_flags;
int window_x;
int window_y;
int window_w;
int window_h;
int depth;
int refresh_rate;
int num_windows;
SDL_WindowID *windows;
/* Renderer info */
const char *renderdriver;
Uint32 render_flags;
SDL_bool skip_renderer;
/* Audio info */
const char *audiodriver;
SDL_AudioSpec audiospec;
} CommonState;
extern CommonState *CommonCreateState(char **argv, Uint32 flags);
extern int CommonArg(CommonState * state, int index);
extern const char *CommonUsage(CommonState * state);
extern SDL_bool CommonInit(CommonState * state);
extern void CommonEvent(CommonState * state, SDL_Event * event, int *done);
extern void CommonQuit(CommonState * state);

View File

@@ -1,270 +0,0 @@
/* Simple program: Move N sprites around on the screen as fast as possible */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <nds.h>
#include <fat.h>
#include "common.h"
#define NUM_SPRITES 10
#define MAX_SPEED 1
static CommonState *state;
static int num_sprites;
static SDL_TextureID *sprites;
static SDL_bool cycle_color;
static SDL_bool cycle_alpha;
static int cycle_direction = 1;
static int current_alpha = 0;
static int current_color = 0;
static SDL_Rect *positions;
static SDL_Rect *velocities;
static int sprite_w, sprite_h;
static SDL_BlendMode blendMode = SDL_BLENDMODE_MASK;
static SDL_TextureScaleMode scaleMode = SDL_TEXTURESCALEMODE_NONE;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static void
quit(int rc)
{
if (sprites) {
SDL_free(sprites);
}
if (positions) {
SDL_free(positions);
}
if (velocities) {
SDL_free(velocities);
}
CommonQuit(state);
exit(rc);
}
int
LoadSprite(char *file)
{
int i;
SDL_Surface *temp;
/* Load the sprite image */
temp = SDL_LoadBMP(file);
if (temp == NULL) {
fprintf(stderr, "Couldn't load %s: %s", file, SDL_GetError());
return (-1);
}
sprite_w = temp->w;
sprite_h = temp->h;
/* Set transparent pixel as the pixel at (0,0) */
if (temp->format->palette) {
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint8 *) temp->pixels);
}
/* Create textures from the image */
for (i = 0; i < state->num_windows; ++i) {
SDL_SelectRenderer(state->windows[i]);
sprites[i] = SDL_CreateTextureFromSurface(0, temp);
if (!sprites[i]) {
fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError());
SDL_FreeSurface(temp);
return (-1);
}
SDL_SetTextureBlendMode(sprites[i], blendMode);
SDL_SetTextureScaleMode(sprites[i], scaleMode);
}
SDL_FreeSurface(temp);
/* We're ready to roll. :) */
return (0);
}
int
LoadSprite2(const u8 * ptr, int size)
{
int i;
SDL_Rect r = { 0, 0, 32, 32 };
for (i = 0; i < state->num_windows; ++i) {
SDL_SelectRenderer(state->windows[i]);
sprites[i] = SDL_CreateTexture(SDL_PIXELFORMAT_ABGR1555,
SDL_TEXTUREACCESS_STATIC, r.w, r.h);
if (!sprites[i]) {
fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError());
return -1;
}
SDL_UpdateTexture(sprites[i], &r, ptr, r.w * 2);
SDL_SetTextureBlendMode(sprites[i], blendMode);
SDL_SetTextureScaleMode(sprites[i], scaleMode);
}
return 0;
}
void
MoveSprites(SDL_WindowID window, SDL_TextureID sprite)
{
int i, n;
int window_w, window_h;
SDL_Rect area, *position, *velocity;
SDL_SelectRenderer(window);
/* Query the sizes */
SDL_GetWindowSize(window, &window_w, &window_h);
/* Cycle the color and alpha, if desired */
if (cycle_color) {
current_color += cycle_direction;
if (current_color < 0) {
current_color = 0;
cycle_direction = -cycle_direction;
}
if (current_color > 255) {
current_color = 255;
cycle_direction = -cycle_direction;
}
SDL_SetTextureColorMod(sprite, 255, (Uint8) current_color,
(Uint8) current_color);
}
if (cycle_alpha) {
current_alpha += cycle_direction;
if (current_alpha < 0) {
current_alpha = 0;
cycle_direction = -cycle_direction;
}
if (current_alpha > 255) {
current_alpha = 255;
cycle_direction = -cycle_direction;
}
SDL_SetTextureAlphaMod(sprite, (Uint8) current_alpha);
}
/* Move the sprite, bounce at the wall, and draw */
n = 0;
SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL);
for (i = 0; i < num_sprites; ++i) {
position = &positions[i];
velocity = &velocities[i];
position->x += velocity->x;
if ((position->x < 0) || (position->x >= (window_w - sprite_w))) {
velocity->x = -velocity->x;
position->x += velocity->x;
}
position->y += velocity->y;
if ((position->y < 0) || (position->y >= (window_h - sprite_w))) {
velocity->y = -velocity->y;
position->y += velocity->y;
}
/* Blit the sprite onto the screen */
SDL_RenderCopy(sprite, NULL, position);
}
/* Update the screen! */
SDL_RenderPresent();
}
int
main(int argc, char *argv[])
{
int i, done;
SDL_Event event;
Uint32 then, now, frames;
consoleDemoInit();
puts("Hello world! Initializing FAT...");
fatInitDefault();
/* Initialize parameters */
num_sprites = NUM_SPRITES;
/* Initialize test framework */
state = CommonCreateState(argv, SDL_INIT_VIDEO);
if (!state) {
return 1;
}
if (!CommonInit(state)) {
quit(2);
}
/* Create the windows, initialize the renderers, and load the textures */
sprites =
(SDL_TextureID *) SDL_malloc(state->num_windows * sizeof(*sprites));
if (!sprites) {
fprintf(stderr, "Out of memory!\n");
quit(2);
}
for (i = 0; i < state->num_windows; ++i) {
SDL_SelectRenderer(state->windows[i]);
SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL);
}
if (LoadSprite("icon.bmp") < 0) {
printf("\nerrored.\n");
while (1);
quit(2);
}
/* Allocate memory for the sprite info */
positions = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect));
velocities = (SDL_Rect *) SDL_malloc(num_sprites * sizeof(SDL_Rect));
if (!positions || !velocities) {
fprintf(stderr, "Out of memory!\n");
quit(2);
}
srand(time(NULL));
if (scaleMode != SDL_TEXTURESCALEMODE_NONE) {
sprite_w += sprite_w / 2;
sprite_h += sprite_h / 2;
}
for (i = 0; i < num_sprites; ++i) {
positions[i].x = rand() % (state->window_w - sprite_w);
positions[i].y = rand() % (state->window_h - sprite_h);
positions[i].w = sprite_w;
positions[i].h = sprite_h;
velocities[i].x = 0;
velocities[i].y = 0;
while (!velocities[i].x && !velocities[i].y) {
velocities[i].x = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED;
velocities[i].y = (rand() % (MAX_SPEED * 2 + 1)) - MAX_SPEED;
}
}
/* Main render loop */
frames = 0;
then = SDL_GetTicks();
done = 0;
while (!done) {
/* Check for events */
++frames;
while (SDL_PollEvent(&event)) {
CommonEvent(state, &event, &done);
switch (event.type) {
case SDL_WINDOWEVENT:
switch (event.window.event) {
case SDL_WINDOWEVENT_EXPOSED:
SDL_SelectRenderer(event.window.windowID);
SDL_RenderFill(0xA0, 0xA0, 0xA0, 0xFF, NULL);
break;
}
break;
default:
break;
}
}
for (i = 0; i < state->num_windows; ++i) {
MoveSprites(state->windows[i], sprites[i]);
}
}
/* Print out some timing information */
now = SDL_GetTicks();
if (now > then) {
printf("%2.2f frames per second\n",
((double) frames * 1000) / (now - then));
}
quit(0);
return 0;
}
/* vi: set ts=4 sw=4 expandtab: */

View File

@@ -1,14 +0,0 @@
#define picture_width 32
#define picture_height 32
static char picture_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x01, 0x18,
0x64, 0x6f, 0xf6, 0x26, 0x0a, 0x00, 0x00, 0x50, 0xf2, 0xff, 0xff, 0x4f,
0x14, 0x04, 0x00, 0x28, 0x14, 0x0e, 0x00, 0x28, 0x10, 0x32, 0x00, 0x08,
0x94, 0x03, 0x00, 0x08, 0xf4, 0x04, 0x00, 0x08, 0xb0, 0x08, 0x00, 0x08,
0x34, 0x01, 0x00, 0x28, 0x34, 0x01, 0x00, 0x28, 0x12, 0x00, 0x40, 0x48,
0x12, 0x20, 0xa6, 0x48, 0x14, 0x50, 0x11, 0x29, 0x14, 0x50, 0x48, 0x2a,
0x10, 0x27, 0xac, 0x0e, 0xd4, 0x71, 0xe8, 0x0a, 0x74, 0x20, 0xa8, 0x0a,
0x14, 0x20, 0x00, 0x08, 0x10, 0x50, 0x00, 0x08, 0x14, 0x00, 0x00, 0x28,
0x14, 0x00, 0x00, 0x28, 0xf2, 0xff, 0xff, 0x4f, 0x0a, 0x00, 0x00, 0x50,
0x64, 0x6f, 0xf6, 0x26, 0x18, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Some files were not shown because too many files have changed in this diff Show More