Duke4.net Forums: M210 - Viewing Profile - Duke4.net Forums

Jump to content

Hide message Show message
Welcome to the Duke4.net Forums!

Register an account now to get access to all board features. After you've registered and logged in, you'll be able to create topics, post replies, send and receive private messages, disable the viewing of ads and more!

Reputation: 333 My posts turn threads into gold
Group:
Members
Active Posts:
733 (0.24 per day)
Most Active In:
Everything EDuke32 (431 posts)
Joined:
07-May 09
Profile Views:
11,007
Last Active:
User is offline Today, 06:06 AM
Currently:
Offline

My Information

Age:
29 years old
Birthday:
December 10, 1987
Gender:
Male Male
Location:
Moscow
Interests:
Blood, Duke3D, RR, SW...

Contact Information

E-mail:
Private
Website URL:
Website URL  http://m210.duke4.net

Latest Visitors

Topics I've Started

  1. News & Releases

    24 June 2017 - 12:13 PM

    I made a new release today!
    You can download it here: BloodGDX

    Changelog:
    
    1. mouse axisY is more smooth now
    2.  projectiles fly higher in the parallaxed skies
    3. checkwarping fix with non-linked upper and lower stacks
    4. voxel preload fix
    5. overheadmap broken sectors drawing fix
    6.  mario cheat without numbers will end the level
    7. loi cutscenes crash fix
    8. saves game from v1.21 support
    9. voxel loading bug fixed
    10. fixed enemies died from lava keep running infinitely in flames
    11. sector bobfloor fix (darkwood crash)
    12. HOM on smaller screensizes fix
    13. electrocution death of monster was sometimes caused by shotgun fixed
    14. fixed crash when trying to load an empty file map
    15. fixed zombie's broken attack in some cases
    16. some voxel floating in the air fix
    17. "fire" effect now working with all palettes
    18. voxels palette change fix
    19. statues(dudes) push fix
    20. items shade correct now
    
    
  2. Bugs & Problems

    19 June 2017 - 09:23 PM

    Welcome to the bugs report thread :)
    If you have a crash or bug, please, post it here with logs attach. Also you can make savegame file for quickly bug discovering :)

    2. I want to know, how it can happen:
    Dassert: nXSprite > 0 && nXSprite < kMaxXSprites
    Full stack trace: 	java.lang.Thread.getStackTrace(Unknown Source)
    	ru.m210projects.Blood.Globals.dassert(Globals.java:338)
    	ru.m210projects.Blood.View.viewDrawScreen(View.java:580)
    	ru.m210projects.Blood.Main.GameLoop(Main.java:1381)
    	ru.m210projects.Blood.Main.render(Main.java:1999)
    	com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    	com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:
    114)
    
    
    evict.MAP
    
  3. Duke Nukem Room over Room system (from Blood)

    28 December 2016 - 09:50 PM

    Hello everyone :)
    I decompiled ROR system from Blood. And for tests I include this system to eDuke32. You can see my results in this video:



    And bad news - it works in Software render only :(

    http://m210.duke4.net/Files/ror.zip - there is an eDuke32 (r3101) and ror.map for your own tests

    And question to developers: Can it fix for Polymost render?

    And if you want, you can added this system to new version of eDuke32

    
    global.c :
    
    int16_t mirrorcnt;
    int16_t MirrorType[MAXMIRRORS];
    int32_t MirrorX[MAXMIRRORS];
    int32_t MirrorY[MAXMIRRORS];
    int32_t MirrorZ[MAXMIRRORS];
    int16_t MirrorLSect[MAXMIRRORS];
    int16_t MirrorUSect[MAXMIRRORS];
    int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    game.c
    
    extern int16_t mirrorcnt;
    extern int16_t MirrorType[MAXMIRRORS];
    extern int32_t MirrorX[MAXMIRRORS];
    extern int32_t MirrorY[MAXMIRRORS];
    extern int32_t MirrorZ[MAXMIRRORS];
    extern int16_t MirrorLSect[MAXMIRRORS];
    extern int16_t MirrorUSect[MAXMIRRORS];
    extern int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    
    void DrawMirrors( long x, long y, long z, short ang, long horiz ) //must add this method in G_DrawRooms before drawrooms
    {
    	int i;
    	int type;
    	long  tx, ty;
    	short tang;
    
    	for( i = MAXMIRRORS - 1; i >= 0; i-- )
    	{
    		if ( gotpic[(i + MIRRORLABEL) >> 3] & (1 << ((i - MAXMIRRORS) & 7)) )
    		{
    			type = MirrorType[i];
    			if( type == 0 ) { //wall mirror
    			
    			} else
    			if ( type == 1 ) //ceiling mirror
    			{
    				int nSector = MirrorLSect[i];
    				drawrooms(x + MirrorX[i], MirrorY[i] + y, z + MirrorZ[i], ang, horiz, nSector + MAXSECTORS );
    				short oldstat = sector[nSector].floorstat;
    				sector[nSector].floorstat |= 1; //kSectorParallax
    				G_DoSpriteAnimations(x,y,ang,65536);
    				drawmasks();
    				sector[nSector].floorstat = oldstat;
    			} else
    			if ( type == 2 ) //floor mirror
    			{
    				int nSector = MirrorLSect[i];
    				drawrooms(x + MirrorX[i], MirrorY[i] + y, z + MirrorZ[i], ang, horiz, nSector + MAXSECTORS );
    				short oldstat = sector[nSector].ceilingstat;
    				sector[nSector].ceilingstat |= 1; //kSectorParallax
    				G_DoSpriteAnimations(x,y,ang,65536);
    				drawmasks();
    				sector[nSector].ceilingstat = oldstat;
    			}
    			
    			gotpic[(i + MIRRORLABEL) >> 3] &= ~(1 << ((i - MAXMIRRORS) & 7));
    			return;
    		}
    	}
    }
    
    premap.c :
    
    #define kMarkerUpperLink 4081
    #define kMarkerLowerLink 4082
    
    extern int16_t mirrorcnt;
    extern int16_t MirrorType[MAXMIRRORS];
    extern int32_t MirrorX[MAXMIRRORS];
    extern int32_t MirrorY[MAXMIRRORS];
    extern int32_t MirrorZ[MAXMIRRORS];
    extern int16_t MirrorLSect[MAXMIRRORS];
    extern int16_t MirrorUSect[MAXMIRRORS];
    extern int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    void InitPlayerStartZones( void )
    {
    	int nSprite;
    	int nSector;
    	// clear link values
    	for ( nSector = 0; nSector < MAXSECTORS; nSector++ )
    	{
    		gUpperLink[nSector] = -1;
    		gLowerLink[nSector] = -1;
    	}
    
    	for ( nSprite = 0; nSprite < MAXSPRITES; nSprite++ )
    	{
    		if (sprite[nSprite].statnum < MAXSTATUS)
    		{
    			spritetype *pSprite = &sprite[nSprite];
    		
    			
    			
    				switch( pSprite->picnum )
    				{
    					case kMarkerUpperLink:
    						gUpperLink[pSprite->sectnum] = (short)nSprite;
    						initprintf("UpperLink\n");
    						break;
    
    					case kMarkerLowerLink:
    						gLowerLink[pSprite->sectnum] = (short)nSprite;
    						initprintf("LowerLink\n");
    						break;
    				}
    			
    		}
    	}
    
    	// verify links have mates and connect them
    	int nFrom;
    	for ( nFrom = 0; nFrom < MAXSECTORS; nFrom++)
    	{
    		if ( gUpperLink[nFrom] >= 0 )
    		{
    			spritetype *pFromSprite = &sprite[gUpperLink[nFrom]];
    			
    			int nID = pFromSprite->hitag;
    			int nTo;
    			for ( nTo = 0; nTo < MAXSECTORS; nTo++)
    			{
    				if ( gLowerLink[nTo] >= 0 )
    				{
    					spritetype *pToSprite = &sprite[gLowerLink[nTo]];
    					
    
    					if ( pToSprite->hitag == nID )
    					{
    						initprintf("Connecting people\n");
    						pFromSprite->owner = (short)gLowerLink[nTo];
    						pToSprite->owner = (short)gUpperLink[nFrom];
    					}
    				}
    			}
    		}
    	}
    }
    
    
    void InitMirrors( void ) //I added this method at the end of G_EnterLevel()
    {
    	InitPlayerStartZones(); //methods name called as Blood, it's just a part of code, which need for ROR works 
    	
    	int i, j;
    	
    	//Scan wall tags
    	mirrorcnt = 0;
    	tilesizx[MIRROR] = 0;
    	tilesizy[MIRROR] = 0;
    	for( i = 0; i < MAXMIRRORS; i++)
    	{
    		tilesizx[i + MIRRORLABEL] = 0;
    		tilesizy[i + MIRRORLABEL] = 0;
    	}
    
    	for( i = numsectors - 1; i >= 0; i--)
    	{
    		if (mirrorcnt == MAXMIRRORS)
    		{
    			initprintf("Maximum mirror count reached.\n");
    			break;
    		}
    
    		if ( sector[i].floorpicnum == MIRROR )
    		{
    			int nUpper = gUpperLink[i];
    			if(nUpper >= 0) {
    				int nLower = sprite[nUpper].owner;
    
    				initprintf("Initializing floor mirror for sector\n");
    				MirrorType[mirrorcnt] = 2;
    				MirrorX[mirrorcnt] = sprite[nLower].x - sprite[nUpper].x;
    				MirrorY[mirrorcnt] = sprite[nLower].y - sprite[nUpper].y;
    				MirrorZ[mirrorcnt] = sprite[nLower].z - sprite[nUpper].z;
    				MirrorLSect[mirrorcnt] = sprite[nLower].sectnum;
    				MirrorUSect[mirrorcnt] = i;
    				sector[i].floorpicnum = (short) (MIRRORLABEL + mirrorcnt++);
    				initprintf("Initializing ceiling mirror for sector\n");
    				MirrorType[mirrorcnt] = 1;
    				MirrorX[mirrorcnt] = sprite[nUpper].x - sprite[nLower].x;
    				MirrorY[mirrorcnt] = sprite[nUpper].y - sprite[nLower].y;
    				MirrorZ[mirrorcnt] = sprite[nUpper].z - sprite[nLower].z;
    				MirrorLSect[mirrorcnt] = i;
    				MirrorUSect[mirrorcnt] = sprite[nLower].sectnum;
    				sector[sprite[nLower].sectnum].ceilingpicnum = (short) (MIRRORLABEL + mirrorcnt);
    				mirrorcnt++;
    			}
    		}
    	}
    
    	initprintf("%d mirrors initialized\n", mirrorcnt);
    }
    
    



    I hope this code helps us to optimize ROR for Polymost
  4. eDoomTC and my map converter

    11 January 2016 - 02:56 AM

    Hi all! Did you remember my DoomTC? :) At last month I worked on map converter from Doom wad files to Duke3D and now I can said, that I completed work on this converter! My converter can make doom's maps almost without editing in mapster32, because my program also converting doors and another doom effects as lights etc. All converted map of Doom, Doom2, Doom2Plutonia and Doom2TNT I put it to my old DoomTC and you can play those maps too :) My converted understand Doom/Doom2 wad files and also Heretic wads and Hexen wads (geometry only, without textures) So, new eDoomTC includes 132 playable maps, launcher like as BloodCM launcher. Enemies was "almost" disabled, therefore this is a "turist" mod :)

    I don't know, will this mod is interested to somebody, therefore I don't want to continue this mod. But anyway, this is a mod with 132 maps :)

    eDoomTC

    So, I released this, and I can continue works with BloodCM now :)
  5. My ART files editor (BAFed)

    17 July 2015 - 02:37 AM

    Hi all! I want to show my new ART files editor (BAFed - Build ART Files Editor)
    I made this program, because for edit my ART files I had to use BASTart (for batch import and blood palette support) and Dukeres (for editing tiles and animation)
    Of course, It isn't convenient to use several programs for ART editing, therefore I made own program, which combines these two programs, with other palettes support and comfortable GUI like Dukeres.
    My program also have other good functions as 32bit png-image support. Uploaded 32bit image will automaticaly converted to choosed palette.
    2. You can import a several ART files to one file at once
    3. You can import a folder with 8bit *.bmp or 32bit *.png images at once and also export images from opened ART file with saving description.ini file with all information about tiles in ART for subsequent import after edit ini file. (as you can make it throught tga2art and art2tga)
    4. BAFed supported Build palettes (dat), photoshop palettes (act) and Microsoft palettes (pal)
    5. You can resize choosed tile at opened ART
    6. For make animation you can choose last tile of animation with Ctrl + LMB, animation will be from choosed tile to last tile.
    7. I made movable preview picture of choosed tile....you can see at all parts of the picture at 700% scale.


    Program requires Java installed on your computer

    Build ART Files Editor

    I hope you enjoy it ;)

Comments

Page 1 of 1
  1. Photo 25 May 2014 - 07:26
    Hy M210, it's a very Long time since the last time we talked.
    I found amny Blood models (previewed on the Transfusion Forum) in a Mod called "PsychoPhobia" on ModDB: http://www.moddb.com/mods/psychophobia
    Cheers, Besli
Page 1 of 1

All copyrights and trademarks are property of their respective owners. Yes, our forum uses cookies. © 2017 Voidpoint, LLC

Enter your sign in name and password


Sign in options