Skip to content

Releases: Ghoster738/Future-Cop-MIT

v0.1.7

21 Apr 00:53
a07fc60
Compare
Choose a tag to compare

🧺πŸ₯šπŸ‡ The Easter Release πŸ‡πŸ₯šπŸ§Ί

I did not expect to release this project on Easter, but here it is. I had made a lot of improvements since v0.1.6. The primary being actor support.

You can view the video for a demonstration of this project here.

Improved Actor Support and Ground Casting

Thanks to BahKooJ's notes, I now support more actor types. The maps now looks more alive than before. You can finally find the player. In a mater of fact, some actors move across the map. To list the improvements and additions would thicken these notes. So, I decided not to list them all. Note: That the actor pathing support is not accurate yet. Ground Casting is also vastly improved. It is both faster and more accurate.

Before

actor-before-0
actor-before-1

After

actor-after-0
actor-after-1

Fogs and Decals are Supported.

These quadrilaterals added much detail to Future Cop. It improves the look of Griffith Park's map.

Before

quad-before-0
quad-before-1

After

quad-after-0
quad-after-1

Map Vertex Color Upgrade/Fix

I had improved the reading of vertex colors for map sections and now they show up properly in the map viewer. This fixed the glitches found on the maps, and the maps now look both better and brighter.

Technical Details

It turned out that the vertex colors in the color palette stored in map sections are actually 16 bit rather than 15 bit. The color format used 5 bits for each channel. The three channels are red, green, and blue. The last bit was used to double the brightness of the color rather than being unused.

Before

shading-before

After

shading-after

Added "shading" to Model Instance Polygon Rendering.

I also worked on giving shading to model instances that should have this shading. This gives the models a little bit more detail. Right now it does not blend in with Future Cop, but it is better than nothing.

Before

model-instance-shading-before

After

model-instance-shading-after

Incomplete Software Renderer

This renderer is only useful for rendering cut-scenes, font and images. It does not render map geometry yet. It also uses most of your CPU. It is not recommended for use yet, and it is there to practice my optimization skills.

Graphics Configuration

I am now giving you the configuration file support. This will enabled you to edit some of the graphics options. The renderer has two options GLES2 or Software. GLES2 is the default, and Software is not useful as of this release. GLES2 has two graphics options semi_transparent_limit is the triangle limit adjust the semi-transparent triangle limit. force_gl2 if set to true would make the program try to use OpenGL 2 then to OpenGLES 2. Software right now only has one option pixel_size. If you increase this option it should make the program go faster, but at a reduced resolution.

[general]
version_major = 0
version_minor = 0
renderer = GLES2

[gles2]
semi_transparent_limit = 131070
force_gl2 = false

[software]
pixel_size = 1

Controls Configuration Update

I decided that it was weird to use JSON rather than INI to store key-mapping. So, here is what configuration files look like now. The section "player 1" holds the configuration mappings. This does mean that the program will no longer read from controls.json file. I recommend that you remove it if you want to save a little bit of data storage.

[general]
control_library = SDL2
version_major = 0
version_minor = 0

[player 1]
menu = Escape
up = W
down = S
left = A
right = D
rotate_left = Q
rotate_right = E
weapon_light = J
weapon_medium = K
weapon_heavy = L
action = ;
jump = Space
camera = Tab
change_target = T
map = M

Video Volume Adjustable in "sound.ini"

I added the video_volume parameter to adjust video volume. 2 is the max and 0.0 is the minimum.

[general]
music_volume = 1.000000
sfx_volume = 1.000000
announcement_volume = 1.000000
master_volume = 1.000000
video_volume = 1.000000

[listener]
sound_limit = 32

[announcement]
queue_limit = 32

What's Changed

Full Changelog: v0.1.6...v0.1.7

Aspect Ratio Bug Fix

08 Mar 06:11
Compare
Choose a tag to compare

Bug Fix For v0.1.6.

This release fixes the aspect ratio bug.

Before

The video was at the wrong aspect ratio due to a mistake in math.
before

After

The aspect ratio had been fixed.
after

v0.1.6

06 Mar 22:07
Compare
Choose a tag to compare

Media Update

For this release, I had worked on video playback support and image viewing support.

Menu's New Look

I had revamped the menu's look. I added a semi-transparent rectangle at the middle of the screen. There is also a radar on the top left of the screen.
image

Image Viewing Support for Windows Only.

Images are shown when the game gets launched. Also, when using the map spectator "loading screens" show up. Press a button to skip them.
image

Video Playing Support for Also Windows Only.

Videos can play when the game gets launched. Also, when using the map spectator videos also play. Press a button to skip the videos.
image

ANM Resources Can Now be Played on the Announcement Player.

If an announcement sound resources also comes with a ANM resource, this animation will play.
image

What's Changed

  • Library mINI directly included; plmpeg for potential video decoding by @Ghoster738 in #79
  • Music is no longer fuzzy by @Ghoster738 in #80
  • Windows BMP Image Format Read and Write Supported by @Ghoster738 in #81
  • Added Image Drawing Support by @Ghoster738 in #82
  • Computer ANM Resources Displays; Main Menu decorations by @Ghoster738 in #83
  • Added MediaPlayer state which plays Windows Images and Video files by @Ghoster738 in #84
  • PS1 CANM Metadata Excluded from raw exports by @Ghoster738 in #85

Full Changelog: v0.1.5...v0.1.6

v0.1.5

16 Feb 11:04
bb70e11
Compare
Choose a tag to compare

Engine Improvements

This release has multiple improvements.

Internal Test Map Added

This is for debugging uses. This test map is created by @Ghoster738. Meaning you do not need the original files to view this map.
image

If you want to see the map just use this command.

./FCopMIT --embedded-map

CObj Quad Bug Fixed.

The previous version of FCopMIT divides quadrilaterals to triangles differently than the original game. This caused graphics bugs because the quadrilaterals where not divided properly.

Previously

image

Now

image

Full Color CObj Decoding

My version previously ignored vertex colors for opaque polygons. My project still deviates from Future Cop's because for some reason blues are always set to zero in the original game. I do not know if this is a CObj bug on the original engine, so I opted to read the blue channel.

Previously

image

Now

image

Upgraded Animated Map Textures from Static Limit to Dynamic Limit

Mostly an implementation detail but the UV animation limit can be increased now. This is thanks to Dynamic World Shader Recompilation. Also this map is created by Natbat3k.

Previously

image

Now

image

Parsing More Playstation 1 Data

This project now reads data it previously skipped. Announcements for the PS1 version can now be read. Small videos and music is also read. However, what is lacking is decoding capabilities.

What's Changed

  • Section Geometry Updated; Internal Test Map; Added Git Attributes by @Ghoster738 in #69
  • This project reads IFF's more accurately by @Ghoster738 in #70
  • I reverted to a previous MojoAL to fix a bug by @Ghoster738 in #71
  • Bare-bones SHD Implementation; Bug fixes by @Ghoster738 in #72
  • Resource Loading Speed; More Header Info Processed by @Ghoster738 in #73
  • IFF Memory/Speed Improvement Removed Redundant Allocations by @Ghoster738 in #74
  • Accurate Quads for Models; Accurate vertex colors; Dynamic World Shader Recompilation by @Ghoster738 in #76
  • PSX SWVR Support; Placeholder VAG Resources; An Announcement Bug Fix by @Ghoster738 in #77
  • Upgraded Libraries and MojoAL is updated again by @Ghoster738 in #78
  • Updated mINI library from 0.9.16 to 0.9.17
  • Updated SDL2 library from 2.30.6 to 2.32.0
  • Updated libpng library from 1.6.43 to 1.6.46
  • Updated libjsoncpp library to 1.9.6
  • Updated MojoAL library

Full Changelog: v0.1.4...v0.1.5

v0.1.4

20 Aug 05:00
Compare
Choose a tag to compare

Faces and Particles

For this update, I fixed graphical bugs and implemented new features.

Mouse Menu Support

Now, you can click on menu buttons with your left mouse button to use them. I really should have done this earlier.

Sky Color Change

I changed the sky color because I noticed certain particle effects are invisible, so I used dark blue instead.
The Sky is Blue

Particle Rendering Support

For this release, I had implemented particle rendering. While they can be placed on the map in code, I am not using them yet.
Moving on, I have implemented the particle renderer which is there to view the particles.
Particle Renderer

Star Rendering Support

This is a three star combination which demonstrates that all 3 known forms of stars can be used. 4 sided, 8 sided and 12 sided stars where encountered.
3 Star Combination

Before

No, more are they these static cross patterns. Note: The exporter uses this pattern still.
A Light in Hollywood Keys

After

They will face the camera like the original did. Only one axis is necessary which reduces triangles.
Star Facing Camera

Billboard Rendering Support

Like the stars, billboards also faces the camera.
Billboards Facing Camera

Precision Bug Render Fix

After upgrading my computer's graphics card, I encountered a bug that happens with certain drivers/graphics cards that certain other people where having. There was a precision bug that probably affected all the way back when this repository was uploaded. It affect OpenGL ES 2 render path. The reasons are difficult to explain, but they where caused by basically being too little resolution for the positions on certain machines.

Before

While I am not giving this bug any justice the title screen looked like this... (If you cannot see it, there are supposed to be vents rather than complete holes to lava.)
image

After

Now, everything looks normal.
image

What's Changed

  • Fixed OpenGL ES 2 precision bug which affects certain graphics cards.
  • Circles to Stars; Stars are now drawn as billboards; Star Vertex Color Animations by @Ghoster738 in #64
  • Added Billboard Draw Support by @Ghoster738 in #65
  • Quick upgrade to detect mouse position to the window by @Ghoster738 in #66
  • Mouse Menu Controls; Crash Without Game Data Fix by @Ghoster738 in #67
  • Added Particle Render; Particle Renderer; Changed Background Color by @Ghoster738 in #68
  • Updated mINI library from 0.9.14 to 0.9.16
  • Updated SDL2 library from 2.30.5 to 2.30.6

Full Changelog: v0.1.3...v0.1.4

v0.1.3

27 Jul 18:12
Compare
Choose a tag to compare

Circles and Normals.

This update brings only one new feature circle/star rendering. I also fixed multiple bugs. Like fixing skin animation exports and fixing normals.

Star/Circle Rendering.

I have implemented circle rendering/export. Now, more/all models can be decoded with my software.
Lights in Griffith Park

A Light in Hollywood Keys

Model and Export Fixes

There where multiple bugs and miss conceptions. There are no apparent bugs with the normals.

Past: Bad Normals.

Before

Now: Good Normals.

After

What's Missing

The animations with the circle primitive are not implemented yet.

What's Changed

  • Fixed skinned animation problem; Added circle primitive; by @Ghoster738 in #61
  • I fixed every problem that I could find having to do with normals by @Ghoster738 in #63

Full Changelog: v0.1.2...v0.1.3

v0.1.2

17 Jul 21:55
Compare
Choose a tag to compare

Audio Update

Now, sound can be played in Future Cop M.I.T. Announcements and Sounds can be played.

New Features

Announcements or SWVR resources can now be played. Also added announcement player.

Controls

Press ACTION button to play the audio.
Press RIGHT to go to next announcement.
Press LEFT to go to previous announcement.

What is displayed?

image

Subfile Name is the name of the announcement. Mostly the team uses numbers with slashes.
SWVR tos offset is the offset from first announcement resource.
SWVR offset is the offset from the start of the mission file.

Generic Sound Resources can also be played.

Note: sounds 1-127 are from the global file. Sounds beyond 127 are from the mission file. WAV and AIFF resources are counted as generic sound resources.

Controls

Press ACTION button to play the audio.
Press JUMP to toggle sound looping.
Press RIGHT to go to next sound.
Press LEFT to go to previous sound.

What is displayed?

image

Resource Id is the identifier of the sound.
The sample offsets are loop offsets
The rest are instructions.

Configurable Audio Volume from sound.ini file.

This file sits at the same location as the futurecop.ini file.

The sound.ini file has four volume levels. sfx volume affects generic sound levels. music volume affects music. Announcement volume affects announcement volume. master volume level affects all three.

Note: The volume cannot exceed 2.0 because I do not want to blow peoples ears up.

Audio exported will keep their metadata preserving loop information.

  • AIFF reading code now reads more metadata.
  • WAV reading code has been refactored.
  • Audio offsets from both AIFF and WAV resources are parsed.
  • Exported WAV and AIFF re-encoding is now optional to avoid metadata loss.

Regressions

  • PS1 files are not supported due to them using their audio encoding being more challenging to decode then regular PCM like WAV or AIFF.
  • Strange audio gaps when setting audio to loop. These gaps create popping noises.

What's Changed

  • Fixed frame to frame slowness bug by @Ghoster738 in #51
  • Fix Bounding Box Rendering Bug For Macs by @Ghoster738 in #52
  • Made Finalize Workaround Configurable by @Ghoster738 in #53
  • Added MojoAL Sound Library, Soundtrack Playback, Partial TOSResource Support, Accessor Upgrade by @Ghoster738 in #54
  • Added Announcements Player and added SWVR Handling by @Ghoster738 in #55
  • AIFF Support and Code Refactoring by @Ghoster738 in #57
  • AIFF and WAV playback support; Added Sound Player; Audio System Upgrades and Changes by @Ghoster738 in #58
  • Added Sound Settings; Fixed Submodules; Removed Temporary glFinish bitfield by @Ghoster738 in #59
  • Rewrite ini if either incomplete or missing by @Ghoster738 in #60

Full Changelog: v0.1.1...v0.1.2

v0.1.1-1

25 May 00:46
f60c27b
Compare
Choose a tag to compare

Bug Fix For v0.1.1.

This is simply a release to fix various rendering bugs of release v0.1.1. Almost no new features except one potential fix to the weird semi-transparency bug.

A Single New Feature.

temporary_finalize_dynamic_triangles option is at the primary conf file. Its range of values is 0-7, and it is a bitfield.
0 means every finalize operation is NOT called. Because it can slow down rendering to a crawl, I only recommend using it if this project is not rendering correctly.

What's Changed

  • Cleaned up bounding box rendering code.
  • Rewrote the routine for drawing dynamic triangles which are used for semi-transparency and lights.
  • Vertex Attribute code enhanced.
  • Fixed frame to frame slowness bug. by @Ghoster738 in #51
  • Fix Bounding Box Rendering Bug For Macs by @Ghoster738 in #52
  • Made Finalize Workaround Configurable. by @Ghoster738 in #53

Full Changelog: v0.1.1...v0.1.1-1

version-0.1.1

10 May 00:22
Compare
Choose a tag to compare

Future Cop M.I.T. Actor and Model Support

This release I worked on both actor and model support. Also, I enhanced the renderer to draw boxes and light semi-transparent polygons. For all that I know, I might be missing some of the features. Also in order to toggle bounding boxes on and off press the keybinding CHANGE_TARGET. I also updated the libraries for this project as well.
Version 0 1 1 Bounding Boxes

Light or Addition Polygons can now be drawn.

light polygon support

Some of Actors are now drawn.

I even implemented the dual coordinate system that Sky Captain uses.
actors

Models or Cobj's Enhancements.

By far Cobj support on this project had improved greatly. In a matter of fact, I now mostly understand Cobj files.

Reflections More Accurate.

Reflective models can be semi-transparent.
image

Reflective models can also be opaque. (However, you cannot mix both semi-transparent and opaque at the same time in the same model file).
image

More Polygon Types.

Lines and Billboards can be read from Cobj.
billboards and lines

Frame By Frame Animations.

I have also implemented frame by frame animations from Models.
sirens example

Display Bounding Boxes.

These are data types that Future Cop uses for various purposes like colliding with the player. They can be exported explicitely via command-line.
image

Bug Fixes

  • At least fixed, Cobj bone animation bug introduced in v0.1.0. Basically, rotations where not being written properly.

Regressions

  • Some Cobj export bugs are still there, but at least X1A works.
  • On macs bounding boxes refuse to render.
  • Raspberry Pi 4 32 bit operating system has obscure "pagefilp" errors. I do not know what this means.

What's Changed

  • Cleanup by @Ghoster738 in #31
  • Compat pi 4 by @Ghoster738 in #32
  • Added CObj texture-less polygon support by @Ghoster738 in #33
  • Transparent Reflections, Graphics Upgrades, and Bug Fixes by @Ghoster738 in #34
  • Added Light Capabilities to the Renderer by @Ghoster738 in #35
  • Added Accessor Class, CObj positions, Turret Gun Actor Positions by @Ghoster738 in #36
  • Changed Graphics API to use Accessor by @Ghoster738 in #37
  • Billboards and Lines Now Stored, and 3DRL are Lengths by @Ghoster738 in #38
  • Billboard Stars can be displayed by @Ghoster738 in #39
  • Introduced Lines and Fixed Billboard Stars by @Ghoster738 in #40
  • Load All Maps Option, Model Texture Animations, and Model Vertex Colors for Addition by @Ghoster738 in #41
  • Reflection Visibility Correction by @Ghoster738 in #42
  • 3DRF chunk in Cobj is now parsed by @Ghoster738 in #43
  • 3DBB Understood by @Ghoster738 in #44
  • Annoying morph model animation bug fixed by @Ghoster738 in #45
  • Cobj Skeletal Export Fixed, Cobj Bounding Box Export, Cobj Optional Cobj Metadata Export by @Ghoster738 in #46
  • Cobj Bounding Box Rendering, GLES Mesh Upgrade, and Bug-fixes by @Ghoster738 in #47
  • Parameter Options for Metadata for Cobj and Ctil, Cobj Commands Shortened, Model Export Optional for Cobj by @Ghoster738 in #48
  • Ctil Research, Fixed SCTA Animations by @Ghoster738 in #49
  • Partial Map Actor Support, Sky Captain, Turrets, Props, and Pickups displays by @Ghoster738 in #50

Full Changelog: v0.1.0...v0.1.1

version-0.1.0

07 Sep 00:02
Compare
Choose a tag to compare

FCopMIT Preview

This marks a new age for this project. Now, the primary executable has been implemented. FCModelViewer and FCMapViewer are now gone. They both had been replaced by the FCopMIT executable. This executable also has better visual effects as has better semi-transparency support. Also, it has implemented special effects like vertex color and vertex uv animations for the maps.

These are the new features of this project.

  • FCopMIT executable with kkmic's parameter and options system that kkmic had contributed for this project.
  • FCopMIT executable has a GUI with a map spectator (map viewer), and a model viewer.
  • FCopMIT also has filesystem capabilities, so relative paths are no longer required. Again thanks to kkmic.
  • Screenshots are placed somewhere else, and they are named with "UTC 2023-09-05 124133.png" depending on the date.
  • Better transparency support via sorting transparent triangles.
  • The map has both UV animations and vertex color animations enabled.
  • This has a better logging system support.

Problems.

  • The armv7 build has been canceled for this particular release because of a flickering problem on the graphics on the Raspberry Pi 4. I will fix this in a later build.