Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 18. leden 2023, 12:44:32 Předmět: Fyzikální engine v C, non-float |
|
|
Neznáte nějaký fyzikální engine, který by byl v C a nepoužíval floaty? Chci si naportovat https://www.franticware.com/cgpinbal na Mega Drive, kde floaty samozřejmě nejsou a v SGDK není C++ kompilátor, jen C. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 23. leden 2023, 11:59:58 Předmět: |
|
|
Nějaká transpilace, aby se hromadně nahradil kód pracující s floaty na kód pracující s int? _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 23. leden 2023, 13:08:46 Předmět: |
|
|
Našel jsem tohle, je to ale v C++:
https://github.com/91Act/box2d_fixed
Asi by to šlo přepsat do C, ale bylo by to dost práce.
Edit: Ztráta přesnosti a rozsahu při použití fixed typu je tak choulostivá věc, že bych se vůbec neodvažoval jít směrem prostého nahrazení za fixed typ v knihovně, která je odladěná pro float. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 23. leden 2023, 13:48:47 Předmět: |
|
|
Tak dřív se to běžně dělalo. Dělal to v pozadí jak Turbo Pascal (do programu přikompiloval detekční a emulační kód), tak Windows (emuloval FPU pro programy pracující s floaty). _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 23. leden 2023, 13:54:24 Předmět: |
|
|
Vidím tam extern "C", takže to jde použít v C programech. A snad existuje i novější kompilátor pro tu zastaralou platformu, abys tu knihovnu mohl zkompilovat. _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 23. leden 2023, 14:06:00 Předmět: |
|
|
Ladis napsal: |
Tak dřív se to běžně dělalo. Dělal to v pozadí jak Turbo Pascal (do programu přikompiloval detekční a emulační kód), tak Windows (emuloval FPU pro programy pracující s floaty). |
ano a taky to pak běželo o několik řádů pomaleji, což frca určitě na mega drivu uvítá
jinak ano - fixed point je cesta, ale především cesta do pekla. např. fp16:16 rozhodně nestačí pro všechny use casy, pak je tu dreaded overflow/underflow a je potřeba být opatrný i u dělení - i tam může dojít k přetečení, není to jenom o dělení nulou - a ještě k tomu square root je dost tricky (i s lookup tably, ale pokud jsi navíc limitovaný pamětí...)
to C++ vadí přesně čemu - není nějaký compiler, co by to uměl cross-compile pro tu motorolu nebo co to tam je?
pak je tu ještě možnost custom řešení - kruh vs line segmenty by nemuselo být úplné peklo - a to i sweep testy by asi šly. tak nebo tak to bude extra práce |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 30. leden 2023, 21:28:46 Předmět: |
|
|
problém není emulace, ale rychlost: 100x slowdown u FLOPS není úplně cool (a to ani při startupu a počítání LUT i když pak v runtime jedeš fixed point) |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 31. leden 2023, 19:06:35 Předmět: |
|
|
Neplánuji použít emulaci floatu. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
|